SCIM for Identity-Federated Workspaces
SCIM API for Identity-Federated Workspaces is similar to the regular workspace SCIM API. Notable differences are:
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Me |
Request example |
|
Response example |
200: { "emails": [ { "type": "work", "value": "user@example.com", "primary": true } ], "displayName": "John Doe", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:workspace:2.0:User:permissionLevel" ], "name": { "familyName": "Doe", "givenName": "John" }, "active": true, "groups": [], "id": "100000", "userName": "user@example.com" } |
Method |
POST |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Users |
Request example |
{ "schemas":[ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName":"user@example.com", "displayName": "John Doe" }
|
Response example |
201: { "emails": [ { "type": "work", "value": "user@example.com", "primary": true } ], "displayName": "John Doe", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:workspace:2.0:User:permissionLevel" ], "name": { "familyName": "Doe", "givenName": "John" }, "active": true, "groups": [], "id": "100000", "userName": "user@example.com" }
404: { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "Account user with name not-user@example.com not found.", "status": "404" }
|
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Users/{user_id} |
Request example |
|
Response example |
200: { "emails": [ { "type": "work", "value": "user@example.com", "primary": true } ], "displayName": "John Doe", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:workspace:2.0:User:permissionLevel" ], "name": { "familyName": "Doe", "givenName": "John" }, "active": true, "groups": [], "id": "100000", "userName": "user@example.com" } |
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Users |
Request example |
GET /api/2.0/accounts/{account_id}/scim/v2/Users?filter=userName+eq+user@example.com |
Response example |
200: { "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "Resources": [ { "emails": [ { "type": "work", "value": "user@example.com", "primary": true } ], "displayName": "John Doe", "name": { "familyName": "Doe", "givenName": "John" }, "active": true, "groups": [], "id": "100000", "userName": "user@example.com" } ] }
|
Method |
PATCH |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Users/{user_id} |
Request example |
// assign role { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "add", "path": "entitlements", "value": [ { "value": "allow-cluster-create" } ] } ] }
// unassign role { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "remove", "path": "entitlements[value eq \"allow-cluster-create\"]" } ] } |
Response example |
200: { "emails": [ { "type": "work", "value": "user@example.com", "primary": true } ], "entitlements": [ { "value": "allow-cluster-create" } ], "displayName": "John Doe", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:workspace:2.0:User:permissionLevel" ], "name": { "familyName": "Doe", "givenName": "John" }, "active": true, "groups": [], "id": "10000", "userName": "user@example.com" } |
Method |
PUT |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Users/{user_id} |
Request example |
// assign role { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "user@example.com", "entitlements": [ { "value": "allow-cluster-create" } ] }
// unassign role { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "user@example.com", "entitlements": [] } |
Response example |
200: { "emails": [ { "type": "work", "value": "user@example.com", "primary": true } ], "entitlements": [ { "value": "allow-cluster-create" } ], "displayName": "John Doe", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:workspace:2.0:User:permissionLevel" ], "name": { "familyName": "Doe", "givenName": "John" }, "active": true, "groups": [], "id": "10000", "userName": "user@example.com" } |
Method |
DELETE |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Users/{user_id} |
Request example |
|
Response example |
204: {} |
Method |
POST |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Groups |
Request example |
{ "schemas":[ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName":"newgroup" } |
Response example |
201: { "displayName": "newgroup", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "members": [ { "display": "User 1", "value": "200000", "$ref": "Users/200000" }, { "display": "User 2", "value": "200001", "$ref": "Users/200001" } ], "groups": [], "id": "100000" }
400: { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "scimType": "Members attribute not supported for current workspace.", "detail": "Request is unparsable, syntactically incorrect, or violates schema.", "status": "400" } |
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Groups/{group_id} |
Request example |
|
Response example |
200: { "displayName": "newgroup", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "members": [ { "display": "User 1", "value": "200000", "$ref": "Users/200000" }, { "display": "User 2", "value": "200001", "$ref": "Users/200001" } ], "groups": [], "id": "100000" } |
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Groups |
Request example |
|
Response example |
200: { "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "Resources": [ { { "displayName": "newgroup", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "members": [ { "display": "User 1", "value": "200000", "$ref": "Users/200000" }, { "display": "User 2", "value": "200001", "$ref": "Users/200001" } ], "groups": [], "id": "100000" } ] } |
Method |
PATCH |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Groups/{group_id} |
Request example |
{ "schemas":[ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations":[ { "op":"add", "value":{ "members":[ { "value":"10000" } ] } } ] } |
Response example |
400: { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "scimType": "invalidSyntax", "detail": "Members attribute cannot be updated as group newgroup can only be managed in account.", "status": "400" }
|
Method |
PATCH |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Groups/{group_id} |
Request example |
{ "schemas":[ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations":[ { "op":"remove", "path":"members[value eq \"100000\"]" } ] } |
Response example |
200: { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "scimType": "invalidSyntax", "detail": "Members attribute cannot be updated as group newgroup can only be managed in account.", "status": "400" }
|
Method |
DELETE |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/Groups/{group_id} |
Request example |
|
Response example |
204: {} |
Method |
POST |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/ServicePrincipals |
Request example |
{ "schemas":[ "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal" ], "applicationId":"<uuid>" } |
Response example |
201: { "displayName": "new service principal", "groups": [], "id": "10000", "applicationId": "<uuid>", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal" ], "active": true }
400: { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "scimType": "Required attribute applicationID is missing in the SCIM Object.", "detail": "Request is unparsable, syntactically incorrect, or violates schema.", "status": "400" }
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "scimType": "serviceprincipal", "detail": "Account service principal with applicationId <uuid> not found.", "status": "400" }
|
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/ServicePrincipals/{id} |
Request example |
|
Response example |
200: { "displayName": "new service principal", "groups": [], "id": "10000", "applicationId": "<uuid>", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal" ], "active": true } |
Method |
GET |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/ServicePrincipals |
Request example |
|
Response example |
200: { "Resources": [ { "displayName": "new service principal", "groups": [], "id": "10000", "applicationId": "<uuid>", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal" ], "active": true } ], "totalResults": 5, "startIndex": 1, "itemsPerPage": 1, "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ] } |
Method |
PATCH |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/ServicePrincipals/{id} |
Request example |
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "add", "path": "entitlements", "value": [ { "value": "allow-cluster-create" } ] } ] } |
Response example |
200: { "displayName": "new service principal", "groups": [], "id": "10000", "applicationId": "<uuid>", "entitlements": [ { "value": "allow-cluster-create" } ], "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal" ], "active": true } |
Method |
DELETE |
Endpoint |
{workspace_domain}/api/2.0/preview/scim/v2/ServicePrincipals/{id} |
Request example |
|
Response example |
204: {} |