Projects¶
List, Retrieve, Update, Create Project and Project Forms
Where:
pk- is the project idformid- is the form idowner- is the username for the user or organization of the project
Register a new Project¶
POST /api/v1/projects
Example¶
{
"url": "https://api.ona.io/api/v1/projects/1",
"owner": "https://api.ona.io/api/v1/users/ona",
"name": "project 1",
"date_created": "2013-07-24T13:37:39Z",
"date_modified": "2013-07-24T13:37:39Z"
}
List of Projects¶
GET /api/v1/projects
Example¶
curl -X GET https://api.ona.io/api/v1/projects
Response¶
[
{
"url": "https://api.ona.io/api/v1/projects/1",
"owner": "https://api.ona.io/api/v1/users/ona",
"name": "project 1",
"date_created": "2013-07-24T13:37:39Z",
"date_modified": "2013-07-24T13:37:39Z"
},
{
"url": "https://api.ona.io/api/v1/projects/4",
"owner": "https://api.ona.io/api/v1/users/ona",
"name": "project 2",
"date_created": "2013-07-24T13:59:10Z",
"date_modified": "2013-07-24T13:59:10Z"
}, ...
]
List of Projects filter by owner/organization¶
GET /api/v1/projects?owner=owner_username
You can use this to get both members and collaborators of an organization. In the case of organizations, this gives you both members and collaborators under “users”. Under “teams” key we list only the members of the organization.
Example¶
curl -X GET https://api.ona.io/api/v1/projects?owner=ona
Retrieve Project Information¶
GET /api/v1/projects/{pk}Example¶
curl -X GET https://api.ona.io/api/v1/projects/1
Response¶
{
"url": "https://api.ona.io/api/v1/projects/1",
"owner": "https://api.ona.io/api/v1/users/ona",
"name": "project 1",
"date_created": "2013-07-24T13:37:39Z",
"date_modified": "2013-07-24T13:37:39Z"
}
Update Project Information¶
PUT /api/v1/projects/{pk}or PATCH /api/v1/projects/{pk}
Example¶
curl -X PATCH -d 'metadata={"description": "Lorem ipsum","location": "Nakuru, Kenya","category": "water"}' https://api.ona.io/api/v1/projects/1
Response¶
{
"url": "https://api.ona.io/api/v1/projects/1",
"owner": "https://api.ona.io/api/v1/users/ona",
"name": "project 1",
"metadata": {
"description": "Lorem ipsum",
"location": "Nakuru, Kenya",
"category": "water"
},
"date_created": "2013-07-24T13:37:39Z",
"date_modified": "2013-07-24T13:37:39Z"
}
Available Permission Roles¶
The following are the available roles in onadata:
memberDefault role for user with no permissionreadonly-no-downloadRole for a user able to view data but not export itreadonlyRole for a user able to view and download datadataentry-onlyRole for a user able to submit data onlydataentry-minorRole for a user able to submit and view only data he/she submitteddataentryRole for a user able to submit and view all dataeditor-minorRole for a user able to view and edit data he/she submittededitorRole for a user able to view and edit all datamanagerRole for a user with administrative privilegesownerRole for an owner of a data-set, organization, or project.
Remove a user from a project¶
You can remove a specific user from a project using POST with payload:
usernameof the user you want to removerolethe user has on the projectremoveset remove to True
Example¶
curl -X POST -d "username=alice" -d "role=readonly" -d "remove=True" http://api.ona.io/api/v1/projects/1/share
Response¶
HTTP 204 NO CONTENT
Assign a form to a project¶
To [re]assign an existing form to a project you need to POST a payload of formid=FORMID to the endpoint below.
POST /api/v1/projects/{pk}/formsExample¶
curl -X POST -d '{"formid": 28058}' https://api.ona.io/api/v1/projects/1/forms -H "Content-Type: application/json"
Response¶
{
"url": "https://api.ona.io/api/v1/forms/28058",
"formid": 28058,
"uuid": "853196d7d0a74bca9ecfadbf7e2f5c1f",
"id_string": "Birds",
"sms_id_string": "Birds",
"title": "Birds",
"allows_sms": false,
"bamboo_dataset": "",
"description": "",
"downloadable": true,
"encrypted": false,
"owner": "ona",
"public": false,
"public_data": false,
"date_created": "2013-07-25T14:14:22.892Z",
"date_modified": "2013-07-25T14:14:22.892Z"
}
Upload XLSForm to a project¶
POST /api/v1/projects/{pk}/formsExample¶
curl -X POST -F xls_file=@/path/to/form.xls https://api.ona.io/api/v1/projects/1/forms
Response¶
{
"url": "https://api.ona.io/api/v1/forms/28058",
"formid": 28058,
"uuid": "853196d7d0a74bca9ecfadbf7e2f5c1f",
"id_string": "Birds",
"sms_id_string": "Birds",
"title": "Birds",
"allows_sms": false,
"bamboo_dataset": "",
"description": "",
"downloadable": true,
"encrypted": false,
"owner": "ona",
"public": false,
"public_data": false,
"date_created": "2013-07-25T14:14:22.892Z",
"date_modified": "2013-07-25T14:14:22.892Z"
}
Get forms for a project¶
GET /api/v1/projects/{pk}/forms
Example¶
curl -X GET https://api.ona.io/api/v1/projects/1/forms
Response¶
[
{
"url": "https://api.ona.io/api/v1/forms/28058",
"formid": 28058,
"uuid": "853196d7d0a74bca9ecfadbf7e2f5c1f",
"id_string": "Birds",
"sms_id_string": "Birds",
"title": "Birds",
"allows_sms": false,
"bamboo_dataset": "",
"description": "",
"downloadable": true,
"encrypted": false,
"owner": "ona",
"public": false,
"public_data": false,
"date_created": "2013-07-25T14:14:22.892Z",
"date_modified": "2013-07-25T14:14:22.892Z",
"tags": [],
"users": [
{
"role": "owner",
"user": "alice",
...
},
...
]
},
...
]
Get list of projects with specific tag(s)¶
Use the tags query parameter to filter the list of projects, tags should be
a comma separated list of tags.
GET /api/v1/projects?tags=tag1,tag2
List projects tagged smart or brand new or both.
Request
^^^^^^^^
curl -X GET https://api.ona.io/api/v1/projects?tag=smart,brand+new
Response¶
HTTP 200 OK
[
{
"url": "https://api.ona.io/api/v1/projects/1",
"owner": "https://api.ona.io/api/v1/users/ona",
"name": "project 1",
"date_created": "2013-07-24T13:37:39Z",
"date_modified": "2013-07-24T13:37:39Z"
},
...
]
Get list of Tags for a specific Project¶
GET /api/v1/project/{pk}/labels
Request¶
curl -X GET https://api.ona.io/api/v1/projects/28058/labels
Response¶
["old", "smart", "clean house"]
Tag a Project¶
A POST payload of parameter tags with a comma separated list of tags.
Examples¶
animal fruit denim- space delimited, no commasanimal, fruit denim- comma delimited
POST /api/v1/projects/{pk}/labels
Payload
{"tags": "tag1, tag2"}
Remove a tag from a Project¶
DELETE /api/v1/projects/{pk}/labels/tag_name
Request¶
curl -X DELETE https://api.ona.io/api/v1/projects/28058/labels/tag1
or to delete the tag “hello world”
curl -X DELETE https://api.ona.io/api/v1/projects/28058/labels/hello%20world
Response¶
HTTP 200 OK
Add a star to a project¶
POST /api/v1/projects/{pk}/starRemove a star to a project¶
DELETE /api/v1/projects/{pk}/starGet user profiles that have starred a project¶
GET /api/v1/projects/{pk}/star