List Invitations for a Domain uri /invitations/{domain} description Paginated listing of all the...
Guest and Sponsor Endpoints
LIST Guests
uri | /guests/{domain} |
---|---|
description | Paginated listing of all guests for an organization's domain. |
http operation | GET |
success response | 200 |
error response | 403 authentication/authorization error associated with the requested domain |
Required Parameters
Name | Description | Format |
---|---|---|
domain | Organization domain that owns the guests. | rfc1035 |
Optional Parameters
Name | Description | Format |
---|---|---|
offset | The number of records to offset the page in the response. | Numeric; Must be >= 0. |
limit | The number of records per page returned in the response. If a limit is not provided, a default limit of 500 per page will be returned. | Numeric; Must be >= 0. |
searchArg | An optional search parameter that allows searching over both the mail attribute and the surname attribute for the guest objects. | String |
linkGroup | An optional search parameter that allows searching by the assigned link group identifier. A valid linkGroupId provide by the /linkGroups API | Numeric; Must be >= 0 |
status |
An optional search parameter that allows searching by the current guest status. Allowable status values are:
|
String |
type |
An optional search parameter to return guests based on one of the associated time stamps specified by the value assigned to type. When used, requires the use of at least the "start" or "end" parameter. The available types are:
|
String |
start |
The start date-time of a window (in UTC) to return guest objects. If not provided, defaults to the current date-time. |
String; formatted in 'yyyy-mm-ddThh24:mi:ss' |
end |
The end date-time of a window (in UTC) to return guest objects. If not provided, defaults to the current date-time. |
String; formatted in 'yyyy-mm-ddThh24:mi:ss' and in UTC |
Sample Request
The following is a valid request which contains pagination parameters.
curl -i -u {api_key}:{api_secret} \
-d offset=10 \
-d limit=5 \
https://apps.cirrusidentity.com/console/api/v2/guests/{domain}
Sample Response
Here is the response that would be returned from the sample request. Note: For brevity, some of the guest records have been replaced by ellipsis.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Fri, 05 Jan 2018 00:26:35 GMT
Set-Cookie: JSESSIONID=**REDACTED**
Set-Cookie: AWSELB=**REDACTED**
Content-Length: 3334
Connection: keep-alive
"href": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?offset=10&limit=5",
"totalCount": 59,
"offset": 10,
"limit": 5,
"count": 5,
"first": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?limit=5",
"next": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?offset=15&limit=5",
"prev": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?offset=5&limit=5",
"guests": [
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/06e901d0-9d2d-418d-b757-3263aa3190e7",
"givenName": "PENDING_GUEST_FIRST_NAME",
"sn": "PENDING_GUEST_LAST_NAME",
"uid": "06e901d0-9d2d-418d-b757-3263aa3190e7",
"mail": null,
"domain": "athena-institute.net",
"status": "invited",
"expirationDate": "2018-11-28T23:53:00Z",
"createDate": "2017-11-29T00:50:55Z",
"modifyDate": "2017-11-29T00:50:55Z",
"eduPersonPrincipalName": null,
"customData": {},
"socialProvider": "",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/06e901d0-9d2d-418d-b757-3263aa3190e7/invitations"
}
},
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/82d84ccd-fa8f-407d-a01d-8739ed00d66d",
"givenName": "Cindy",
"sn": "Cirrus",
"uid": "82d84ccd-fa8f-407d-a01d-8739ed00d66d",
"mail": "cindy.cirrus@gmail.com",
"domain": "athena-institute.net",
"status": "valid",
"expirationDate": "2018-12-13T00:03:55Z",
"createDate": "2017-12-13T00:05:58Z",
"modifyDate": "2018-01-03T23:19:22Z",
"eduPersonPrincipalName": "123456789123456789123@google.com",
"customData": {
"cirrusId": "d9dd1d0f-73db-4e57-912f-ebd92037704a",
"orgUid": "88776655"
},
"socialProvider": "",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/82d84ccd-fa8f-407d-a01d-8739ed00d66d/invitations"
}
},
...
]
}
Sample Request with Search
The following is a valid request which contains all required and optional parameters.
curl -i -u {api_key}:{api_secret} \
https://apps.cirrusidentity.com/console/api/v2/guests/{domain}?offset=0&limit=3&searchArg=connie.contrail@gmail.com
Sample Response
Here is the response that would be returned from the sample request. Note: For brevity, some of the guest records have been replaced by ellipsis.
HTTP/1.1 200
Date: Wed, 19 Sep 2018 23:15:39 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: **REDACTED**
Set-Cookie: **REDACTED**
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?limit=3",
"totalCount": 4,
"offset": 0,
"limit": 3,
"count": 3,
"first": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?limit=3",
"next": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net?offset=3&limit=3",
"prev": null,
"guests": [
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/215d784b-248a-4b79-80a9-626e888f4504",
"givenName": "Connie",
"sn": "Contrail",
"uid": "215d784b-248a-4b79-80a9-626e888f4504",
"mail": "connie.contrail@gmail.com",
"domain": "athena-institute.net",
"status": "valid",
"expirationDate": "2019-09-17T21:58:32Z",
"createDate": "2018-09-17T21:59:07Z",
"modifyDate": "2018-09-17T21:59:21Z",
"eduPersonPrincipalName": "100546218585243689914@google.com",
"customData": {},
"socialProvider": "google",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/215d784b-248a-4b79-80a9-626e888f4504/invitations"
}
}...
Here is the response that would be returned from a request where the domain was not authorized by the API key. This error is returned rather than a HTTP-404 error if the incorrect domain is provided because the API key authorization fails.
HTTP/1.1 403
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Fri, 05 Jan 2018 04:09:46 GMT
Set-Cookie: JSESSIONID=**REDACTED**
Set-Cookie: AWSELB=**REDACTED**
Content-Length: 111
Connection: keep-alive
{"errors":["{api_key} does not have domain authorization for domain: {domain}"]}
LIST Guests by CustomAttribute
uri |
/guests/{domain}/byCustomAttribute |
---|---|
description | Get guests that have a specific customeData attribute name and value pair. |
http operation | GET |
success response | 200 |
error response | 403 authentication/authorization error associated with the requested domain |
Required Parameters
Name | Description | Format |
---|---|---|
domain | Organization domain that owns the guests. | rfc1035 |
attributeName | The guest customeData attribute name to look for. | String |
attributeValue | The value for the customData attribute to look for. | String |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required parameters.
curl -i -u {api_key}:{api_secret} \
-d attributeName='testId' \
-d attributeValue='A1234' \
https://apps.cirrusidentity.com/console/api/v2/guests/{domain}/byCustomAttribute
Sample Response
Here is the response that would be returned from the sample request.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Fri, 05 Jan 2018 18:29:42 GMT
Set-Cookie: JSESSIONID=**REDACTED**
Set-Cookie: AWSELB=**REDACTED**
Content-Length: 763
Connection: keep-alive
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net/byCustomAttribute?attributeName=testId&attributeValue=A1234",
"totalCount": 1,
"count": 1,
"guests": [
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/5d50e7d288554a5c98bdfad13cd69988",
"givenName": "Cindy",
"sn": "Cirrus",
"uid": "5d50e7d288554a5c98bdfad13cd69988",
"mail": "cindy.cirrus@gmail.com",
"domain": "athena-institute.net",
"status": "valid",
"expirationDate": "2018-03-12T23:59:59Z",
"createDate": "2017-04-19T21:39:42Z",
"modifyDate": "2018-01-05T18:00:23Z",
"eduPersonPrincipalName": "cindy.cirrus@gmail.com",
"customData": {
"testId": "A1234"
},
"socialProvider": "",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/5d50e7d288554a5c98bdfad13cd69988/invitations"
}
}
]
}
Here is the response that would be returned from a request where the attribute name is not found.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Fri, 05 Jan 2018 18:58:19 GMT
Set-Cookie: JSESSIONID=**REDACTED**
Set-Cookie: AWSELB=**REDACTED**
Content-Length: 192
Connection: keep-alive
{"href":"https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net/byCustomAttribute?attributeName=testId-dummy&attributeValue=A1234","totalCount":0,"count":0,"guests":[]}
Here is the response that would be returned from a request where the attribute value is not found.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Fri, 05 Jan 2018 19:00:05 GMT
Set-Cookie: JSESSIONID=**REDACTED**
Set-Cookie: AWSELB=**REDACTED**
Content-Length: 192
Connection: keep-alive
{"href":"https://apps.cirrusidentity.com/console/api/v2/guests/athena-institute.net/byCustomAttribute?attributeName=testId&attributeValue=A1234-dummy","totalCount":0,"count":0,"guests":[]}
Here is the response that would be returned from a request where the domain was not authorized by the API key. This error is returned rather than a HTTP-404 error if the incorrect domain is provided because the API key authorization fails.
HTTP/1.1 403
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Fri, 05 Jan 2018 04:09:46 GMT
Set-Cookie: JSESSIONID=**REDACTED**
Set-Cookie: AWSELB=**REDACTED**
Content-Length: 111
Connection: keep-alive
{"errors":["{api_key} does not have domain authorization for domain: {domain}"]}
GET Guest
uri | /guest/{uid} |
---|---|
description | Return the attributes for a guest. |
http operation | GET |
success response | 200 |
error response | 403 authentication/authorization error 404 UID not found |
Required Parameters
Name | Description | Format |
---|---|---|
UID | The uid assigned to the guest record. | string |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required and optional parameters.
curl -i -u {api_key}:{api_secret} \
https://apps.cirrusidentity.com/console/api/v2/guest/{uid}
Sample Response
Here is the response that would be returned from the sample request.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 20:56:00 GMT
Set-Cookie: JSESSIONID=***REDACT***
Set-Cookie: AWSELB=***REDACT***
Content-Length: 615
Connection: keep-alive
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091",
"givenName": "Connie",
"sn": "Contrail",
"uid": "2666957e-b1de-4e16-a301-a32bacfaa091",
"mail": "connie.contrail@gmail.com",
"domain": "athena-institute.net",
"status": "valid",
"expirationDate": "2019-01-17T20:44:02Z",
"createDate": "2018-01-17T20:44:20Z",
"modifyDate": "2018-01-17T20:45:51Z",
"eduPersonPrincipalName": "11223344556677889@facebook.com",
"customData": {},
"socialProvider": "facebook",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091/invitations"
}
}
Here is the response that would be returned from a request where the UID is not found.
HTTP/1.1 404
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:10:27 GMT
Set-Cookie: JSESSIONID=***REDACTED***
Set-Cookie: AWSELB=***REDACTED***
Content-Length: 83
Connection: keep-alive
{
"errors": [
"Guest not found for uid: 2666957e-b1de-4e16-a301-a32bacfaa091-dummy."
]
}
GET Guest invitations
uri | /guest/{uid}/invitations |
---|---|
description | Return the invitations currently held by a guest. |
http operation | GET |
success response | 200 |
error response | 403 authentication/authorization error 404 UID not found |
Required Parameters
Name | Description | Format |
---|---|---|
UID | The uid assigned to the guest record. | string |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required and optional parameters.
curl -i -u {api_key}:{api_secret} \
https://apps.cirrusidentity.com/console/api/v2/guest/{uid}/invitations
Sample Response
Here is the response that would be returned from the sample request.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:16:04 GMT
Set-Cookie: JSESSIONID=***REDACTED***
Set-Cookie: AWSELB=***REDACTED***
Content-Length: 956
Connection: keep-alive
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091/invitations",
"totalCount": 1,
"invitations": [
{
"href": "https://apps.cirrusidentity.com/console/api/v2/invitation/ac80d916-7918-4887-a9df-d158416a5601",
"uid": "ac80d916-7918-4887-a9df-d158416a5601",
"createDate": "2018-01-17T20:44:02Z",
"modifyDate": "2018-01-17T20:45:51Z",
"mailForInvite": "connie.contrail@gmail.com",
"status": "claimed",
"invitationDate": "2018-01-17T20:44:02Z",
"invitationAcceptedDate": "2018-01-17T20:45:51Z",
"expirationDate": "2019-01-17T20:44:02Z",
"validityPeriod": 3,
"givenName": "",
"sn": "",
"customData": {
"course": "Course1",
"section": "Section1"
},
"spEntityID": "https://research.athena-institute.net/shibboleth",
"sponsor": {
"href": "https://apps.cirrusidentity.com/console/api/v2/sponsor/11aa22bb33cc44dd55ee66ff77aa88bb"
},
"guest": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091"
}
}
]
}
Here is the response that would be returned from a request where the UID is not found.
HTTP/1.1 404
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:10:27 GMT
Set-Cookie: JSESSIONID=***REDACTED***
Set-Cookie: AWSELB=***REDACTED***
Content-Length: 83
Connection: keep-alive
{
"errors": [
"Guest not found for uid: 2666957e-b1de-4e16-a301-a32bacfaa091-dummy."
]
}
UPDATE Guest customData
uri |
/guest/{uid}/customData |
---|---|
description | Update the customeData name-value pairs for a guest. |
http operation | PUT |
success response | 200 |
error response | 403 authentication/authorization error associated with the requested domain 404 uid not found or used HTTP-POST instead of HTTP-PUT |
Required Parameters
Name | Description | Format |
---|---|---|
uid | The uid assigned to the guest record. | String |
new customData | The body of the PUT should be a JSON document with a content-type of "application/json" containing the new customData name-value pairs. For example the document may look like the following: {"customData": { "foo" : "bar", "fu" : "baz"}} |
JSON Document |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required parameters. In this request, we are adding the "sampleId" to the customData and retaining the existing "testId" entry.
curl -i -u {api_key}:{api_secret} \
-X PUT \
-H 'Content-Type: application/json' \
-d '{ "customData": {"testId": "A1234", "sampleId": "S-9876"}}' \
https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091/customData
Sample Response
Here is the response that would be returned from the previous request.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:25:45 GMT
Set-Cookie: JSESSIONID=***REDACTED***
Set-Cookie: AWSELB=***REDACTED***
Content-Length: 651
Connection: keep-alive
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091",
"givenName": "Connie",
"sn": "Contrail",
"uid": "2666957e-b1de-4e16-a301-a32bacfaa091",
"mail": "connie.contrail@gmail.com",
"domain": "athena-institute.net",
"status": "valid",
"expirationDate": "2019-01-17T20:44:02Z",
"createDate": "2018-01-17T20:44:20Z",
"modifyDate": "2018-01-17T21:25:45Z",
"eduPersonPrincipalName": "11223344556677889@facebook.com",
"customData": {
"testId": "A1234",
"sampleId": "S-9876"
},
"socialProvider": "facebook",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/2666957e-b1de-4e16-a301-a32bacfaa091/invitations"
}
}
Here is the response that would be returned from a request where the UID was not found
HTTP/1.1 404
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:27:51 GMT
Set-Cookie: JSESSIONID=***REDACTED***
Set-Cookie: AWSELB=***REDACTED***
Content-Length: 83
Connection: keep-alive
{
"errors": [
"Guest not found for uid: 2666957e-b1de-4e16-a301-a32bacfaa091-dummy."
]
}
CREATE Guest
uri | /guests |
---|---|
description | Create a guest in a linkGroup. You can use this as an anchor for different providerAttributes -- this is used to support authentication based account linking |
http operation | POST |
success response | 201 |
error response | 403 authentication/authorization error |
Required Parameters
Name | Description | Format |
---|---|---|
givenName | The given name for the guest | String |
sn | The surname for the guest | String |
The email address for the guest | RFC 4524 | |
linkGroup | A valid linkGroupId provide by the /linkGroups API | Numeric; Must be >= 0 |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required parameters.
curl --location --request POST "https://apps.cirrusidentity.com/console/api/v2/guests" \
--header "Content-Type: application/json" \
--data "{
\"givenName\": \"Alice\",
\"sn\": \"Arcus\",
\"mail\": \"alice.arcus@outlook.com\",
\"linkGroup\": {
\"id\": \"99991\"
}
}"
Sample Response
Here is the response that would be returned from the previous request.
HTTP/1.1 201 Created
Date: Fri, 21 Dec 2018 20:38:36 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: AWSALB=REDACTED
X-Application-Context: REDACTED
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Location: https://apps.cirrusidentity.com/console/api/v2/guest/aaaaaaa-bbbb-4444-cccc-111111111111
Set-Cookie: JSESSIONID=REDACTED
{
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/aaaaaaa-bbbb-4444-cccc-111111111111",
"givenName": "Alice",
"sn": "Arcus",
"uid": "aaaaaaa-bbbb-4444-cccc-111111111111",
"mail": "alice.arcus@outlook.com",
"domain": "athena-institute.net",
"status": "valid",
"expirationDate": null,
"createDate": "2018-12-21T20:38:36Z",
"modifyDate": "2018-12-21T20:38:36Z",
"eduPersonPrincipalName": null,
"customData": {},
"socialProvider": "",
"invitations": {
"href": "https://apps.cirrusidentity.com/console/api/v2/guest/aaaaaaa-bbbb-4444-cccc-111111111111/invitations"
}
}
Delete Guest
uri | /guest/{uid} |
---|---|
description | Delete a guest object |
http operation | DELETE |
success response | 200 |
error response | 403 authentication/authorization error 404 UID not found or delete not allowed |
Required Parameters
Name | Description | Format |
---|---|---|
UID | The uid assigned to the guest record. | string |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required and optional parameters.
curl -i -u {api_key}:{api_secret} -X DELETE \
https://apps.cirrusidentity.com/console/api/v2/guest/{uid}
Errors
The API will return errors if there is are either active invitation or provider attribute (linking) records
attached to the guest.
{
"errors": [
"Guest has linked provider attributes and cannot be deleted."
]
}
{
"errors": [
"Guest has existing invitation(s) and cannot be deleted."
]
}
GET Sponsor
uri | /sponsor/{uid} |
---|---|
description | Return the attributes for a sponsor. |
http operation | GET |
success response | 200 |
error response | 403 authentication/authorization error 404 UID not found |
Required Parameters
Name | Description | Format |
---|---|---|
UID | The uid assigned to the sponsor record. | string |
Optional Parameters
Name | Description | Format |
---|---|---|
None |
Sample Request
The following is a valid request which contains all required and optional parameters.
curl -i -u {api_key}:{api_secret} \
https://apps.cirrusidentity.com/console/api/v2/sponsor/{uid}
Sample Response
Here is the response that would be returned from the sample request.
HTTP/1.1 200
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:29:42 GMT
Set-Cookie: JSESSIONID=***REDACT***
Set-Cookie: AWSELB=***REDACT***
Content-Length: 316
Connection: keep-alive
{
"href": "https://apps.cirrusidentity.com/console/api/v2/sponsor/11aa22bb33cc44dd55ee66ff77aa88bb",
"givenName": "Someone",
"sn": "Sponsor",
"uid": "11aa22bb33cc44dd55ee66ff77aa88bb",
"mail": "someone.sponsor@athena-institute.net",
"eppn": "someone.sponsor@athena-institute.net",
"createDate": "2017-04-19T21:38:50Z",
"modifyDate": "2018-01-16T14:16:00Z"
}
Here is the response that would be returned from a request where the UID is not found.
HTTP/1.1 404
Cache-control: no-cache="set-cookie"
Content-Type: application/json;charset=UTF-8
Date: Wed, 17 Jan 2018 21:36:33 GMT
Set-Cookie: JSESSIONID=***REDACTED**
Set-Cookie: AWSELB=***REDACTED***
Content-Length: 81
Connection: keep-alive
{
"errors": [
"Sponsor not found for uid: 11aa22bb33cc44dd55ee66ff77aa88bb-dummy."
]
}
© Copyright Cirrus Identity, Inc.
Blog comments