Skip to main content

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)

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.

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
}

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.