Skip to content
kyrcha edited this page Jul 23, 2012 · 5 revisions

RESTful protocol for projects.

READ Projects

GET /api/prj | index

Fetches the projects of the authenticated user. During the first prototype authentication may not be as important.

Consumes: Route

Produces: JSON

{
    "success": true,
    "message": "Project(s) retrieved successfully",
    "size": 2,
    "data": [
      {
        "_id": 
        {
          "$oid": "4ff5bca7e4b0082c63d08df0"
        },
        "name": "My second project",
        "description": "Another project"
     },
     {
        "_id": 
        {
          "$oid": "4ff5bca7e4b0082c63d08df1"
        },
        "name": "My project",
        "description": "A project"
     }
  ]
}

READ Project

GET /api/prj/{prj_id} | show

Fetch the properties of a specific project.

Consumes: Route

Produces: JSON

{
   "success": true,
   "message": "Project(s) retrieved successfully",
   "size": 1, 
   "data": [
     {
      "_id": {
      "$oid": "4ff5bca7e4b0082c63d08df1"
     },
     "name": "My project",
     "description": "A project"
     }
  ]
}

if not found:

{
  "success": true,
  "message": "Project(s) retrieved successfully (No data were found though)",
  "size": 0,
  "data": []
}

if wrong MongoId provided:

{
  "success": false,
  "exception": "invalid ObjectId [4ff5bca7e4b0082c63d08df]",
  "message": "Cannot get entity for collection: projects with qKey=_id and qValue=4ff5bca7e4b0082c63d08df"
}

UPDATE Project

PUT /{usrnm}/prj/{prj_id} | update

Updates the properties of a project under the project id in the route.

Consumes: Route, JSON

{
name : "My project",
description : "A project"
}

Produces: JSON

{
  "success": true,
  "message": "Project updated successfully",
  "size": 1,
  "data": [
     {
      "_id": {
      "$oid": "4ff5bca7e4b0082c63d08df1"
     },
     "name": "My project",
     "description": "A project"
   }
  ]
}

CREATE Project

POST /api/prj | create

Creates a new project based on the properties filled up in the form and sent in JSON format

Consumes: Route, JSON

 {
name : "My project",
description : "A project"
  }  

Produces: JSON, Create status (if failed)

{
   "success": true,
   "message": "Project created successfully",
   "objectCreated": {
     "name": "My project",
     "description": "A project",
     "_id": {
       "$oid": "4ff5bf83e4b0082c63d08dff"
      }
   }
}

DELETE Project

DELETE /api/prj/{prj_id} | delete

Deletes the specific project.

Consumes: Route

Produces: Delete status in JSON

{
  "success": true,
  "message": "Object Removed",
  "idToRemove": "4ff5bf83e4b0082c63d08dff",
  "objectRemoved": {
    "_id": {
      "$oid": "4ff5bf83e4b0082c63d08dff"
    },
    "name": "My project",
    "description": "A project"
  }
}

Project Schema

{
"name": "Project",
"type": "object",
"description": "The project of a user containing his scenarios of experiments",
"properties": {
    "name": {
        "type": "string",
        "description": "Name of the project",
        "optional": true
    },
    "description": {
        "type": "string",
        "description": "Description of the project",
        "optional": true
    }
},
"additionalProperties" : false
}