Orgs
Overview
The API exposes a representation of OCL orgs. users are members of orgs. orgs may “own” collections and sources in the same way that users may. However, orgs do not actually perform any edits since they cannot authenticate; instead, users which are members with appropriate permissions may create new sources and collections on behalf of an organization.
Versioning of organizations
Version history is not stored for
orgs- edits are in-place and only standard audit information is maintained (”created_on”, “created_by”, “updated_on”, “updated_by”)
Get a single organization
Get a single organization - private organizations can only be retrieved with appropriate privileges
GET /orgs/:org/
Response
Status: 200 OK
{
"type": "Organization",
"uuid": "8d94f280-c2cc-11de-8d13-0010c6dffd0f",
"id": "My-Organization",
"name": "My Organization",
"company": "Company Name",
"website": "http://myorganization.com/",
"location": "Boston, MA, USA",
"public_access": "View",
"extras": { "extra-meta-data": "my-value" },
"url": "/orgs/My-Organization/",
"members_url": "/orgs/My-Organization/members/",
"sources_url": "/orgs/My-Organization/sources/",
"collections_url": "/orgs/My-Organization/collections/",
"members": 2,
"public_collections": 1,
"public_sources": 1,
"created_on": "2008-01-14T04:33:35Z",
"created_by": "johndoe",
"updated_on": "2008-02-18T09:10:16Z",
"updated_by": "johndoe"
}
List organizations
List all public organizations
GET /orgs/
List all organizations for a user
GET /users/:user/orgs/
List all public and private organizations for the authenticated user
GET /user/orgs/
Parameters
q (optional) - search criteria (across these fields: “name” and “company”)
verbose (optional) - returns detailed results (same as getting a single organization)
sortAsc/sortDesc (optional) - sort the results (ascending or descending) on one of the following attributes: “bestMatch” (default), “lastUpdated”, “name”
Response
Status: 200 OK
[
{
"id": "My-Organization",
"name": "My Organization",
"url": "/orgs/My-Organization/"
}
]
Create new organization
Creates a new organization with the currently authenticated user as the owner and as a member
POST /orgs/
Input
id (required) string
name (required) string
company (optional) string
website (optional) string
location (optional) string
extras (optional) json dictionary
public_access (optional) string “View” (default), “Edit”, or “None”
{
"id": "My-New-Org",
"name": "My New Org",
"company": "My Company Name",
"website": "http://mycompany.com/",
"location": "Paris, France",
"extras": { "extra-meta-data": "my-value" },
"public_access": "View"
}
Response
Status: 201 Created
Returns the full, non-public JSON representation of the new organization object
Update organization
Update metadata for an organization. Authenticated user must be a member of the organization.
POST /orgs/:org/
Note that modifying “name” does not change the value of “id”
Input
name (optional) string
company (optional) string
website (optional) string
location (optional) string
extras (optional) json dictionary
public_access (optional) string “View” (default), “Edit”, or “None”
{
"name": "My New Organization Name",
"company": "My Company Name",
"website": "http://mycompany.com/",
"location": "Mumbai, India",
"extras": { "extra-meta-data": "my-value" }
}
Response
Status: 200 OK
Returns the updated version of the organization - same as
GET /orgs/:org/
Deactivate an organization
To be implemented (https://github.com/OpenConceptLab/ocl_issues/issues/67)
Delete an organization
Authenticated user must be a superuser in order to delete an organization
DELETE /orgs/:org/
Response
Status: 204 No Content
List members of an organization
Get the list of members for an organization - Organization must be public or the authenticated user is also a member
GET /orgs/:org/members/
Response
Status: 200 OK
[
{
"username": "johndoe",
"name": "John Doe",
"url": "/users/johndoe/"
}
]
Get organization member status
Get whether a specific user is a member of an organization - authenticated user must be a member of the organization to do this
GET /orgs/:org/members/:user/
Response if user is a member
Status: 204 No Content
Response if user is not a member
Status: 404 Not Found
Add new member to organization
Add a new member to an organization - in order to add a new member, the authenticated user must be an administrative member of the organization
PUT /orgs/:org/members/:user/
Response
Status: 204 No Content
Remove member from organization
Authenticated user must be an administrative member of the organization in order to remove an organization member
DELETE /orgs/:org/members/:user/
Note that this does not delete the user account, it only removes them from the organization
Response
Status: 204 No Content - Member successfully removed
Status: 404 Not found OR 409 Conflict - User is not a member of the organization
Status: 404 Not Found - User does not exist
Status: 401 Unauthorized - No authentication credentials provided
Status: 403 Forbidden - Authentication credentials provided, but user does not have permission to remove a member
Search and Filter Behavior
Text Search (e.g.
q=criteria) - NOTE: Plus-sign (+) indicates relative relevancy weight of the termorg.name (++++), org.company (+)
Facets
??
Filters
company - user.company
location - user.location
Sort
bestMatch (default) - see search fields above
name (Asc/Desc) - org.name
lastUpdated (Asc/Desc) - org.last_updated