This is a wiki for the standard API for Groups, Permissions

This is a RESTful API which is initially focused on HTTP/JSON.

Open issues

Standards

TODO

Discuss history of memberships

Versioning

The version of the API is an integer which is sent in the URL.  If the API is changed in a backwards compatible way (e.g. extra fields which do not change names or structure), then the version number doesn't change. However, there is also a dot version number which includes another integer for the revision number which is changed whenever the API is changed in a backwards compatible way.  The server dot version is sent in the response metadata. 

Query params: paging, sorting

Clients can specify records on search requests to be sorted and/or paged.  Note, if not specified, lists will be sorted based on a default sort field.

To put paging in the request, use these params:   resource?offset=5&sortField=name&ascending=false&limit=200

Param name

Example value(s)

Description

pagingEnabled

true, false

To request that there shouldnt be paging, use this url param, pagingEnabled=false.  pagingEnabled can be true or false.  It doesnt have to be sent for "true", you can send limit instead.  If you send pagingEnabled=false and limit set to something, that is an error.  If pagingEnabled= false, the server can override this with an arbitrary limit and sortField.  However, the server should support at least a count of 1000

limit

100

To set the size of the page, use limit.  This number must be greater than 0.  Note: if the count is too high the server can override the request and lower the count.  However, the server must support at least a limit of 1000

offset

0

offset is zero indexes as to which page is returned.  If it is not set, and there is no offsetFieldValue, it defaults to 0.  Must be an integer greater than or equal to 0.

offsetFieldValue

"jsmith"

this is mutually exclusive with offset.  If this is set, then the results will return everything after this value in the result list, until the resultlist is blank, then there is nothing else.  This is more reliable than offset which can miss more records due to data churn while the paging is taking place.  Note, it is imperative that the sort field be unique and non-null.  If you want all records, you could sort on "id" and be safe.  After receiving the first batch, then send the last value of the sorted field in this param to get the next batch

sortField

"displayName"

sortField is the resource specific sort field to sort on.  Note, there could be more than one value that relates to the same field to make things easier to use.  This should not be case-sensitive.  If it is blank, and there is sorting, then a default sortField will be selected.  You can set the sort field without using paging if you like.

ascending

true|false

ascending is a boolean true or false.  This defaults to true.

extraFields=meta.totalCount

 

if the server should do a total count of records with the request and return in meta.totalCount.  If it is not specified, then it will not be returned.  This might affect the performance of the request if requested

When a search is returned, if it is paged or sorted or not cached, fields in the meta object will be returned with the total count (is extraFields=meta.totalCount is set) and a summary of what was done inside the meta object

{
  "meta":{
    "offset": 4,
    "limit": 100,
    "sortField":"displayName",
    "ascending":true,
    "totalCount":468
    "lastModified":"2012-11-04T09:57:03.541Z", ... etc
  },
  "responseMeta":{...  etc
}

Validations (will throw error):