Skip to main content
Version: 2.0

SCIM – User Management API

Overview​

The SCIM – User Management API allows you to automate user provisioning from your identity provider into Prezent. You can programmatically create, read, and manage user records to simplify onboarding, offboarding, and permission handling.

Use it to:

  • Sync users between Prezent and your IdP
  • Retrieve user data by ID or email
  • Create or update user access

Authentication​

All endpoints require API key-based authentication. Add the API key in the request Authorization header using the Bearer token format:

Example:

Authorization: Bearer your-api-key

Common Headers​

All responses include CORS headers:

{
"Access-Control-Allow-Origin": "*"
}

Key Endpoints​

  • GET /api/v1/scim/Users – Retrieve all users
  • GET /api/v1/scim/Users/{id} – Get user by ID
  • POST /api/v1/scim/Users – Create a new user
  • PUT /api/v1/scim/Users/{id} – Update user (full replacement)
  • PATCH /api/v1/scim/Users/{id} – Update user (partial modification)
  • GET /api/v1/scim/ResourceTypes – Get all resource types
  • GET /api/v1/scim/ResourceTypes/{id} – Get resource type by ID
  • GET /api/v1/scim/Schemas – Get all schemas
  • GET /api/v1/scim/Schemas/{id} – Get schema by ID

Get All Users​

Retrieve a list of users associated in your organization.

GET /api/v1/scim/Users

Query Parameters

  • filter (optional): Filter users by email (format: email eq user@example.com)
  • startIndex (optional): Starting index for pagination (must be non-negative)
  • count (optional): Number of results to return (must be non-negative)
  • Authorization: Bearer token containing API key -->

Get User by ID​

Retrieve a specific user by their Email ID.

GET /api/v1/scim/Users/{id}

Path Parameters

  • id: User's email address

Create a New User​

Create a new user in Prezent.

Request body example

POST /api/v1/scim/Users

Request Body

{
"userName": "user@example.com",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"active": true,
"urn:scim:schemas:prezent:1.0:User": {
"team": "team-name",
"plan": "Prezent Premium"
}
}

Required Fields:

  • userName (email format)
  • name.givenName (max 50 characters)
  • name.familyName (max 50 characters)

Optional Fields:

  • active (boolean, defaults to true)
  • urn:scim:schemas:prezent:1.0:User.team (team name)
  • urn:scim:schemas:prezent:1.0:User.plan (Prezent Standard or Prezent Premium)

Note:

  • The schemas array and emails block are not mandatory fields and can be omitted from the request body.
  • You cannot include both team and plan in the request body simultaneously; doing so will result in an error.

Update User​

Update an existing user's information using PUT or PATCH methods.

PUT /api/v1/scim/Users/{id}
PATCH /api/v1/scim/Users/{id}

Path Parameters

  • id: User's email address

Request Body (PUT)

{
"name": {
"givenName": "John",
"familyName": "Doe"
},
"active": true
}

Request Body (PATCH)

{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "name.givenName",
"value": "John"
},
{
"op": "replace",
"path": "name.familyName",
"value": "Doe"
},
{
"op": "replace",
"path": "active",
"value": true
}
]
}

Supported op values: replace, add

Supported path values: active (boolean), name.givenName (string), name.familyName (string)

Note: The schemas array, userName, and emails block are not mandatory fields and can be omitted from the request body.

Get Resource Types​

Retrieve available SCIM resource types.

GET /api/v1/scim/ResourceTypes

Get Resource Type by ID​

Retrieve a specific resource type by ID.

GET /api/v1/scim/ResourceTypes/{id}

Path Parameters

  • id: Resource type ID (e.g., "User")

Get Schemas​

Retrieve available SCIM schemas.

GET /api/v1/scim/Schemas

Get Schema by ID​

Retrieve a specific schema by ID.

GET /api/v1/scim/Schemas/{id}

Path Parameters

  • id: Schema ID (e.g., "urn:ietf:params:scim:schemas:core:2.0:User")

Common Error Responses​

Invalid Syntax​

{
"statusCode": 400,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "400",
"scimType": "invalidSyntax",
"detail": "The request payload is malformed or missing required fields."
}
}

Invalid Value​

{
"statusCode": 400,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "400",
"scimType": "invalidValue",
"detail": "The provided email address format is invalid."
}
}

Not Found​

{
"statusCode": 404,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "404",
"scimType": "notFound",
"detail": "User not found"
}
}

Resource Limit Exceeded​

{
"statusCode": 409,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "409",
"scimType": "resourceLimitExceeded",
"detail": "Quota/licensing exceeded"
}
}

Internal Server Error​

{
"statusCode": 500,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "500",
"scimType": "internalServerError",
"detail": "An unexpected error occurred while processing the request."
}
}

SCIM Compliance​

This API implements a subset of the SCIM 2.0 specification (System for Cross-domain Identity Management) focusing on user management. The implementation follows RFC 7644 for the SCIM 2.0 Protocol.