SCIM 2.0
SCIM 2.0 service provider for user and group provisioning from your identity provider.
SCIM service configuration
Section titled “SCIM service configuration”GET /scim/v2/ServiceProviderConfig
Authentication: None: the request is authenticated by the signature described above.
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Capabilities of the SCIM service. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig" ], "patch": { "supported": true }, "bulk": { "supported": false, "maxOperations": 0, "maxPayloadSize": 0 }, "filter": { "supported": true, "maxResults": 200 }, "changePassword": { "supported": false }, "sort": { "supported": true }, "etag": { "supported": false }, "authenticationSchemes": [ { "type": "oauthbearertoken", "name": "OAuth Bearer Token", "primary": true } ]}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/ServiceProviderConfig"SCIM resource types
Section titled “SCIM resource types”GET /scim/v2/ResourceTypes
Authentication: None: the request is authenticated by the signature described above.
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Supported resource types (User, Group). |
Example 200
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 2, "Resources": [ { "id": "User", "name": "User", "endpoint": "/Users", "schema": "urn:ietf:params:scim:schemas:core:2.0:User" }, { "id": "Group", "name": "Group", "endpoint": "/Groups", "schema": "urn:ietf:params:scim:schemas:core:2.0:Group" } ]}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/ResourceTypes"SCIM schemas
Section titled “SCIM schemas”GET /scim/v2/Schemas
Authentication: None: the request is authenticated by the signature described above.
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Supported schemas. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 2, "Resources": [ { "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", "description": "User Account" }, { "id": "urn:ietf:params:scim:schemas:core:2.0:Group", "name": "Group", "description": "Group" } ]}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/Schemas"List users
Section titled “List users”GET /scim/v2/Users
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
filter |
query | string | no | SCIM filter, for example userName eq "jane.doe@example.com". and is supported. |
startIndex |
query | integer | no | |
count |
query | integer | no |
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Users of the token’s tenant. |
401 |
SCIM token missing, invalid, revoked or expired. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "jane.doe@example.com", "userName": "jane.doe@example.com", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "displayName": "Jane Doe", "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true, "meta": { "resourceType": "User", "location": "/scim/v2/Users/jane.doe@example.com" } } ]}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/Users" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN"Create a user
Section titled “Create a user”POST /scim/v2/Users
Authentication: SCIM token: Authorization: Bearer <token>
Request body
Section titled “Request body”application/scim+json
| Name | Type | Required | Description |
|---|---|---|---|
schemas |
array<string> | yes | |
id |
string | no | |
externalId |
string \ | null | no |
userName |
string | yes | |
name |
object | no | |
name.givenName |
string | no | |
name.familyName |
string | no | |
name.formatted |
string | no | |
displayName |
string | no | |
emails |
array<object> | no | |
emails[].value |
string (email) | no | |
emails[].type |
string | no | |
emails[].primary |
boolean | no | |
active |
boolean | no | |
userType |
string | no | |
title |
string \ | null | no |
locale |
string \ | null | no |
timezone |
string \ | null | no |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User |
object | no | |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.employeeNumber |
string \ | null | no |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.department |
string \ | null | no |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.manager |
object \ | null | no |
meta |
object | no | |
meta.resourceType |
string | no | |
meta.created |
string \ | null (date-time) | no |
meta.lastModified |
string \ | null (date-time) | no |
meta.location |
string | no |
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "jane.doe@example.com", "externalId": "00u1a2b3c4D5e6F7g8h9", "name": { "givenName": "Jane", "familyName": "Doe" }, "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true}Responses
Section titled “Responses”| Status | Description |
|---|---|
201 |
User created. |
400 |
Invalid SCIM request. |
401 |
SCIM token missing, invalid, revoked or expired. |
409 |
A user with this userName already exists. |
Example 201
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "jane.doe@example.com", "externalId": "00u1a2b3c4D5e6F7g8h9", "userName": "jane.doe@example.com", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "displayName": "Jane Doe", "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true, "userType": "User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "employeeNumber": "E-10442", "department": "Finance", "manager": null }, "meta": { "resourceType": "User", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Users/jane.doe@example.com" }}Example with curl
Section titled “Example with curl”curl -X POST "https://exocortex-api.ai-exo-cortex.com/scim/v2/Users" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN" \ -H "Content-Type: application/scim+json" \ --data '{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],"userName":"jane.doe@example.com","externalId":"00u1a2b3c4D5e6F7g8h9","name":{"givenName":"Jane","familyName":"Doe"},"emails":[{"value":"jane.doe@example.com","type":"work","primary":true}],"active":true}'Get a user
Section titled “Get a user”GET /scim/v2/Users/{id}
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
User. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "jane.doe@example.com", "externalId": "00u1a2b3c4D5e6F7g8h9", "userName": "jane.doe@example.com", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "displayName": "Jane Doe", "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true, "userType": "User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "employeeNumber": "E-10442", "department": "Finance", "manager": null }, "meta": { "resourceType": "User", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Users/jane.doe@example.com" }}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/Users/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN"Replace a user
Section titled “Replace a user”PUT /scim/v2/Users/{id}
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Request body
Section titled “Request body”application/scim+json
| Name | Type | Required | Description |
|---|---|---|---|
schemas |
array<string> | yes | |
id |
string | no | |
externalId |
string \ | null | no |
userName |
string | yes | |
name |
object | no | |
name.givenName |
string | no | |
name.familyName |
string | no | |
name.formatted |
string | no | |
displayName |
string | no | |
emails |
array<object> | no | |
emails[].value |
string (email) | no | |
emails[].type |
string | no | |
emails[].primary |
boolean | no | |
active |
boolean | no | |
userType |
string | no | |
title |
string \ | null | no |
locale |
string \ | null | no |
timezone |
string \ | null | no |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User |
object | no | |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.employeeNumber |
string \ | null | no |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.department |
string \ | null | no |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.manager |
object \ | null | no |
meta |
object | no | |
meta.resourceType |
string | no | |
meta.created |
string \ | null (date-time) | no |
meta.lastModified |
string \ | null (date-time) | no |
meta.location |
string | no |
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "jane.doe@example.com", "externalId": "00u1a2b3c4D5e6F7g8h9", "userName": "jane.doe@example.com", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "displayName": "Jane Doe", "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true, "userType": "User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "employeeNumber": "E-10442", "department": "Finance", "manager": null }, "meta": { "resourceType": "User", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Users/jane.doe@example.com" }}Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
User replaced. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "jane.doe@example.com", "externalId": "00u1a2b3c4D5e6F7g8h9", "userName": "jane.doe@example.com", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "displayName": "Jane Doe", "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true, "userType": "User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "employeeNumber": "E-10442", "department": "Finance", "manager": null }, "meta": { "resourceType": "User", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Users/jane.doe@example.com" }}Example with curl
Section titled “Example with curl”curl -X PUT "https://exocortex-api.ai-exo-cortex.com/scim/v2/Users/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN" \ -H "Content-Type: application/scim+json" \ --data '{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],"id":"jane.doe@example.com","externalId":"00u1a2b3c4D5e6F7g8h9","userName":"jane.doe@example.com","name":{"givenName":"Jane","familyName":"Doe","formatted":"Jane Doe"},"displayName":"Jane Doe","emails":[{"value":"jane.doe@example.com","type":"work","primary":true}],"active":true,"userType":"User","urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":{"employeeNumber":"E-10442","department":"Finance","manager":null},"meta":{"resourceType":"User","created":"2026-11-01T08:00:00.000Z","lastModified":"2026-11-01T08:00:00.000Z","location":"/scim/v2/Users/jane.doe@example.com"}}'Update a user (PATCH)
Section titled “Update a user (PATCH)”PATCH /scim/v2/Users/{id}
Supports add, replace and remove operations, for example deactivating with {"op":"replace","path":"active","value":false}.
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Request body
Section titled “Request body”application/scim+json
| Name | Type | Required | Description |
|---|---|---|---|
schemas |
array<string> | no | |
Operations |
array<object> | yes | |
Operations[].op |
string (add, replace, remove, Add, Replace, Remove) |
yes | |
Operations[].path |
string | no | |
Operations[].value |
no |
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "replace", "path": "active", "value": false } ]}Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
User updated. |
400 |
Invalid SCIM request. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "jane.doe@example.com", "externalId": "00u1a2b3c4D5e6F7g8h9", "userName": "jane.doe@example.com", "name": { "givenName": "Jane", "familyName": "Doe", "formatted": "Jane Doe" }, "displayName": "Jane Doe", "emails": [ { "value": "jane.doe@example.com", "type": "work", "primary": true } ], "active": true, "userType": "User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "employeeNumber": "E-10442", "department": "Finance", "manager": null }, "meta": { "resourceType": "User", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Users/jane.doe@example.com" }}Example with curl
Section titled “Example with curl”curl -X PATCH "https://exocortex-api.ai-exo-cortex.com/scim/v2/Users/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN" \ -H "Content-Type: application/scim+json" \ --data '{"schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations":[{"op":"replace","path":"active","value":false}]}'Delete a user (deprovisioning)
Section titled “Delete a user (deprovisioning)”DELETE /scim/v2/Users/{id}
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Responses
Section titled “Responses”| Status | Description |
|---|---|
204 |
User deprovisioned. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example with curl
Section titled “Example with curl”curl -X DELETE "https://exocortex-api.ai-exo-cortex.com/scim/v2/Users/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN"List groups
Section titled “List groups”GET /scim/v2/Groups
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
filter |
query | string | no | SCIM filter, for example userName eq "jane.doe@example.com". and is supported. |
startIndex |
query | integer | no | |
count |
query | integer | no |
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Groups of the token’s tenant. |
401 |
SCIM token missing, invalid, revoked or expired. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": "grp_service_desk_l1", "displayName": "Service Desk L1", "members": [ { "value": "jane.doe@example.com", "type": "User", "display": "jane.doe@example.com" } ], "meta": { "resourceType": "Group", "location": "/scim/v2/Groups/grp_service_desk_l1" } } ]}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/Groups" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN"Create a group
Section titled “Create a group”POST /scim/v2/Groups
Authentication: SCIM token: Authorization: Bearer <token>
Request body
Section titled “Request body”application/scim+json
| Name | Type | Required | Description |
|---|---|---|---|
schemas |
array<string> | yes | |
id |
string | no | |
displayName |
string | yes | |
externalId |
string \ | null | no |
members |
array<object> | no | |
members[].value |
string | yes | |
members[].type |
string | no | |
members[].display |
string | no | |
meta |
object | no | |
meta.resourceType |
string | no | |
meta.created |
string \ | null (date-time) | no |
meta.lastModified |
string \ | null (date-time) | no |
meta.location |
string | no |
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "Service Desk L1", "members": [ { "value": "jane.doe@example.com" } ]}Responses
Section titled “Responses”| Status | Description |
|---|---|
201 |
Group created. |
400 |
Invalid SCIM request. |
401 |
SCIM token missing, invalid, revoked or expired. |
Example 201
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": "grp_service_desk_l1", "displayName": "Service Desk L1", "externalId": null, "members": [ { "value": "jane.doe@example.com", "type": "User", "display": "jane.doe@example.com" } ], "meta": { "resourceType": "Group", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Groups/grp_service_desk_l1" }}Example with curl
Section titled “Example with curl”curl -X POST "https://exocortex-api.ai-exo-cortex.com/scim/v2/Groups" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN" \ -H "Content-Type: application/scim+json" \ --data '{"schemas":["urn:ietf:params:scim:schemas:core:2.0:Group"],"displayName":"Service Desk L1","members":[{"value":"jane.doe@example.com"}]}'Get a group
Section titled “Get a group”GET /scim/v2/Groups/{id}
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Group. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": "grp_service_desk_l1", "displayName": "Service Desk L1", "externalId": null, "members": [ { "value": "jane.doe@example.com", "type": "User", "display": "jane.doe@example.com" } ], "meta": { "resourceType": "Group", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Groups/grp_service_desk_l1" }}Example with curl
Section titled “Example with curl”curl -X GET "https://exocortex-api.ai-exo-cortex.com/scim/v2/Groups/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN"Update a group (PATCH)
Section titled “Update a group (PATCH)”PATCH /scim/v2/Groups/{id}
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Request body
Section titled “Request body”application/scim+json
| Name | Type | Required | Description |
|---|---|---|---|
schemas |
array<string> | no | |
Operations |
array<object> | yes | |
Operations[].op |
string (add, replace, remove, Add, Replace, Remove) |
yes | |
Operations[].path |
string | no | |
Operations[].value |
no |
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "add", "path": "members", "value": [ { "value": "john.smith@example.com" } ] } ]}Responses
Section titled “Responses”| Status | Description |
|---|---|
200 |
Group updated. |
400 |
Invalid SCIM request. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example 200
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": "grp_service_desk_l1", "displayName": "Service Desk L1", "externalId": null, "members": [ { "value": "jane.doe@example.com", "type": "User", "display": "jane.doe@example.com" } ], "meta": { "resourceType": "Group", "created": "2026-11-01T08:00:00.000Z", "lastModified": "2026-11-01T08:00:00.000Z", "location": "/scim/v2/Groups/grp_service_desk_l1" }}Example with curl
Section titled “Example with curl”curl -X PATCH "https://exocortex-api.ai-exo-cortex.com/scim/v2/Groups/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN" \ -H "Content-Type: application/scim+json" \ --data '{"schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations":[{"op":"add","path":"members","value":[{"value":"john.smith@example.com"}]}]}'Delete a group
Section titled “Delete a group”DELETE /scim/v2/Groups/{id}
Authentication: SCIM token: Authorization: Bearer <token>
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string | yes |
Responses
Section titled “Responses”| Status | Description |
|---|---|
204 |
Group deleted. |
401 |
SCIM token missing, invalid, revoked or expired. |
404 |
Resource not found in the token’s tenant. |
Example with curl
Section titled “Example with curl”curl -X DELETE "https://exocortex-api.ai-exo-cortex.com/scim/v2/Groups/jane.doe@example.com" \ -H "Authorization: Bearer $EXO_SCIM_TOKEN"Page generated from the OpenAPI specification of the integration API, version 1.1.0.