...
- You cannot send an offset without a limit
- If you send pagingEnabled = false, then you shouldnt send in paging settings
Default resources
https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi?indent=true
Note: This always returns JSON... with pointers to the various formats
LastModified will be mandated from the API, when the API changes, or when the server has restarted
Code Block |
---|
{
"asasDefaultResource":{
"jsonDefaultUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi.json",
"xmlDefaultUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi.xml"
},
"meta":{
"lastModified":"2012-11-04T09:57:03.541Z",
"selfUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi?indent=true",
"statusCode":"SUCCESS",
"structureName":"defaultResourceContainer",
"success":true
},
"responseMeta":{
"httpStatusCode":200,
"millis":274
},
"serviceMeta":{
"serverVersion":"1.0",
"serviceRootUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi"
}
}
|
The default resource has urls to the various default resources, GET only. e.g.
https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi.json?indent=true
Code Block |
---|
{
"asasDefaultVersionResource":{
"serverType":"Grouper WS 2.0.1",
"v1Uri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1.json"
},
"meta":{
"lastModified":"2012-11-04T09:57:03.541Z",
"selfUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi.json?indent=true",
"statusCode":"SUCCESS",
"structureName":"defaultVersionResourceContainer",
"success":true
},
"responseMeta":{
"httpStatusCode":200,
"millis":15
},
"serviceMeta":{
"serverVersion":"1.0",
"serviceRootUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi"
}
}
|
GET https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1.json?indent=true
Code Block |
---|
{
"asasVersionResource":{
"entitiesUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/entities.json",
"foldersUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/folders.json",
"groupsUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/groups.json",
"permissionsUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/permissions.json"
},
"meta":{
"lastModified":"2012-11-04T09:57:03.541Z",
"selfUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1.json?indent=true",
"statusCode":"SUCCESS",
"structureName":"versionResourceContainer",
"success":true
},
"responseMeta":{
"httpStatusCode":200,
"millis":11
},
"serviceMeta":{
"serverVersion":"1.0",
"serviceRootUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi"
}
}
|
https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1.xml?indent=true
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?>
<edu.internet2.middleware.authzStandardApiServer.corebeans.AsasVersionResourceContainer>
<asasVersionResource>
<entitiesUri>https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/entities.xml</entitiesUri>
<foldersUri>https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/folders.xml</foldersUri>
<groupsUri>https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/groups.xml</groupsUri>
<permissionsUri>https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/permissions.xml</permissionsUri>
</asasVersionResource>
<meta>
<lastModified>2012-11-04T09:57:03.541Z</lastModified>
<selfUri>https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1.xml?indent=true</selfUri>
<statusCode>SUCCESS</statusCode>
<structureName>versionResourceContainer</structureName>
<success>true</success>
</meta>
<responseMeta>
<httpStatusCode>200</httpStatusCode>
<millis>614</millis>
</responseMeta>
<serviceMeta>
<serverVersion>1.0</serverVersion>
<serviceRootUri>https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi</serviceRootUri>
</serviceMeta>
</edu.internet2.middleware.authzStandardApiServer.corebeans.AsasVersionResourceContainer>
|
sdf
Groups resource
The groups resource: https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/groups.json?indent=true (or .xml)
Allows query params (paging, sorting) described above
This is GET only. It will return a list of groups, and it might page the results based on server settings (see paging above). Sample response
Code Block |
---|
{
"groups":[
{
"description":"java developers",
"displayName":"apetro-unicon:friends:java-devs",
"id":"6260127554e449b69000508960b21744",
"name":"apetro-unicon:unicon-apetro-friends:java-devs",
"status":"enabled",
"uri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/groups/name%3Aapetro-unicon%3Aunicon-apetro-friends%3Ajava-devs.json"
},
{
"description":"",
"displayName":"aStem:A Group",
"id":"d3490e96e0cf44539864b98e1c9b53d9",
"name":"aStem:aGroup",
"status":"enabled",
"uri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/groups/name%3AaStem%3AaGroup.json"
}
]
,
"meta":{
"ascending":true,
"lastModified":"2012-11-17T23:39:07.574Z",
"limit":100,
"offset":0,
"selfUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi/v1/groups.json?indent=true",
"sortField":"name",
"statusCode":"SUCCESS",
"structureName":"groupSearchContainer",
"success":true
},
"responseMeta":{
"httpStatusCode":200,
"millis":265
},
"serviceMeta":{
"serverVersion":"1.0",
"serviceRootUri":"https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/authzStandardApi"
}
}
|
Filter the results:https://groups.institution.edu/groupsApp/authzStandardApi/v1/groups?groups.status=active
or: groups.name=a:b:*
or: groups.parentFolder=a:b&groups.parentFolderScope=ONE_LEVEL (or ALL_IN_SUBTREE)
Individual group resource
The group resource: https://groups.institution.edu/groupsApp/authzStandardApi/v1/groups/a:b
This resource is available for GET, PUT, POST, DELETE
GET Sample response:
Code Block |
---|
{
"group":
{
"id": "123abc",
"name": "a:b:c",
"displayName": "A:B:C",
"description": "This is the description",
"status": "active",
"admins": [
"???",
],
"memberManagers": ...,
-- other fields --,
},
"responseMeta": {
"success": true,
"serviceRootUrl": "https://groups.institution.edu/groupsApp/authzStandardApi",
"serverVersion": "1.4",
"resultCode": "SUCCESS"
}
}
|
success is true if the URL is correct up until the group name part.
PUT (create) Sample request https://groups.institution.edu/groupsApp/authzStandardApi/v1/groups/a:b :
Code Block |
---|
{
"group":
{
"name": "a:b:c",
"displayName": "A:B:C",
"description": "This is the description",
"status": "active",
"admins": [
"???",
],
"memberManagers": ...,
-- other fields --
},
}
|
Response 201 for created, 409 for already exists (resultCode: ERROR_ALREADY_EXISTS):
Code Block |
---|
{
"responseMeta": {
"success": true,
"serviceRootUrl": "https://groups.institution.edu/groupsApp/authzStandardApi",
"serverVersion": "1.4",
"resultCode": "SUCCESS_CREATED"
}
}
|
POST (update)
Folders collection
PUT /folders/foo
PUT /folders/foo:bar
Special name for top level folder ":"
Folder separator is :
Folder save (PUT/POST)
Request:
Code Block |
---|
PUT /grouperWs/authzStandardApi/v1/folders/name:test.xml HTTP/1.1
Connection: close
Authorization: Basic R3Jvabc123
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8090
Content-Length: 0
|
Response:
Code Block |
---|
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Wed, 31 Dec 1969 19:00:00 EST
Content-Type: text/xml;charset=UTF-8
Content-Length: 955
Date: Mon, 14 Jan 2013 09:17:02 GMT
Connection: close
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<folderSaveResponse>
<folder>
<creatorsUri>/v1/folders/name%3Atest/creators.xml</creatorsUri>
<description/>
<displayName>test</displayName>
<folderAdminsUri>/v1/folders/name%3Atest/admins.xml</folderAdminsUri>
<id>83580b7023524bb3bac27a2cb6b1e764</id>
<name>test</name>
<parentFolderUri>/v1/folders/name%3A%3A.xml</parentFolderUri>
<status>active</status>
<uri>/v1/folders/name%3Atest.xml</uri>
</folder>
<meta>
<lastModified>2013-01-14T04:16:48.805Z</lastModified>
<selfUri>http://localhost:8090/grouperWs/authzStandardApi/v1/folders/name:test.xml</selfUri>
<statusCode>SUCCESS</statusCode>
<structureName>folderSaveResponse</structureName>
<success>true</success>
</meta>
<responseMeta>
<httpStatusCode>200</httpStatusCode>
<millis>26</millis>
</responseMeta>
<serviceMeta>
<serverVersion>1.0</serverVersion>
<serviceRootUri>http://localhost:8090/grouperWs/authzStandardApi</serviceRootUri>
</serviceMeta>
</folderSaveResponse>
|
Folder recursive delete
Option: recursive=true will delete subobjects
Individual folder resource
id
name
displayName
description
parentUri
folderAdminsUri
folderCreatorsUri
sdf