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 usersGET /api/v1/scim/Users/{id}
– Get user by IDPOST /api/v1/scim/Users
– Create a new userPUT /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 typesGET /api/v1/scim/ResourceTypes/{id}
– Get resource type by IDGET /api/v1/scim/Schemas
– Get all schemasGET /api/v1/scim/Schemas/{id}
– Get schema by ID
Get All Users
Retrieve a list of users associated in your organization.
- Request
- Success Response
- Error Response
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)
{
"statusCode": 200,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"startIndex": 1,
"totalResults": 1,
"itemsPerPage": 1,
"Resources": [
{
"id": "user@example.com",
"userName": "user@example.com",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "user@example.com",
"primary": true
}
],
"active": true
}
]
}
}
{
"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."
}
}
Get User by ID
Retrieve a specific user by their Email ID.
- Request
- Success Response
- Error Response
GET /api/v1/scim/Users/{id}
Path Parameters
id
: User's email address
{
"statusCode": 200,
"body": {
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "user@example.com",
"userName": "user@example.com",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "user@example.com",
"primary": true
}
],
"active": true
}
}
{
"statusCode": 404,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "404",
"scimType": "notFound",
"detail": "User not found"
}
}
Create a New User
Create a new user in Prezent.
- Request
- Success Response
- Error Response
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.
{
"statusCode": 200,
"body": {
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "user@example.com",
"userName": "user@example.com",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "user@example.com",
"primary": true
}
],
"active": true
}
}
{
"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."
}
}
Update User
Update an existing user's information using PUT or PATCH methods.
- Request
- Success Response
- Error Response
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.
{
"statusCode": 200,
"body": {
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "user@example.com",
"userName": "user@example.com",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "user@example.com",
"primary": true
}
],
"active": true
}
}
{
"statusCode": 404,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"status": "404",
"scimType": "notFound",
"detail": "User not found"
}
}
Get Resource Types
Retrieve available SCIM resource types.
- Request
- Success Response
GET /api/v1/scim/ResourceTypes
{
"statusCode": 200,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "User",
"name": "User",
"endpoint": "/Users",
"description": "User Account",
"schema": "urn:ietf:params:scim:schemas:core:2.0:User",
"schemaExtensions": [
{
"schema": "urn:scim:schemas:prezent:1.0:User",
"required": true
}
],
"meta": {
"resourceType": "ResourceType",
"location": "https://w8t47cwmeb.execute-api.us-west-2.amazonaws.com/devstage/api/v1/scim/ResourceTypes/User"
}
}
]
}
}
Get Resource Type by ID
Retrieve a specific resource type by ID.
- Request
- Success Response
GET /api/v1/scim/ResourceTypes/{id}
Path Parameters
id
: Resource type ID (e.g., "User")
{
"statusCode": 200,
"body": {
"id": "User",
"name": "User",
"endpoint": "/Users",
"description": "User Account",
"schema": "urn:ietf:params:scim:schemas:core:2.0:User",
"schemaExtensions": [
{
"schema": "urn:scim:schemas:prezent:1.0:User",
"required": true
}
],
"meta": {
"resourceType": "ResourceType",
"location": "https://w8t47cwmeb.execute-api.us-west-2.amazonaws.com/devstage/api/v1/scim/ResourceTypes/User"
}
}
}
Get Schemas
Retrieve available SCIM schemas.
- Request
- Success Response
GET /api/v1/scim/Schemas
{
"statusCode": 200,
"body": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resources": [
{
"id": "urn:ietf:params:scim:schemas:core:2.0:User",
"name": "User",
"description": "Core User schema",
"attributes": [
{
"name": "userName",
"type": "string",
"multiValued": false,
"required": true,
"caseExact": false,
"mutability": "immutable",
"returned": "default",
"uniqueness": "server"
}
],
"meta": {
"resourceType": "Schema",
"location": "https://w8t47cwmeb.execute-api.us-west-2.amazonaws.com/devstage/api/v1/scim/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
}
}
],
"totalResults": 2
}
}
Get Schema by ID
Retrieve a specific schema by ID.
- Request
- Success Response
GET /api/v1/scim/Schemas/{id}
Path Parameters
id
: Schema ID (e.g., "urn:ietf:params:scim:schemas:core:2.0:User")
{
"statusCode": 200,
"body": {
"id": "urn:ietf:params:scim:schemas:core:2.0:User",
"name": "User",
"description": "Core User schema",
"attributes": [
{
"name": "userName",
"type": "string",
"multiValued": false,
"required": true,
"caseExact": false,
"mutability": "immutable",
"returned": "default",
"uniqueness": "server"
},
{
"name": "name",
"type": "complex",
"subAttributes": [
{
"name": "givenName",
"type": "string",
"required": false
},
{
"name": "familyName",
"type": "string",
"required": false
}
],
"required": false
},
{
"name": "emails",
"type": "complex",
"multiValued": true,
"subAttributes": [
{
"name": "value",
"type": "string",
"required": true
},
{
"name": "primary",
"type": "boolean",
"required": false
}
]
},
{
"name": "active",
"type": "boolean",
"multiValued": false,
"description": "A Boolean value indicating the user's administrative status.",
"required": false,
"mutability": "readWrite",
"returned": "default"
}
],
"meta": {
"resourceType": "Schema",
"location": "https://w8t47cwmeb.execute-api.us-west-2.amazonaws.com/devstage/api/v1/scim/Schemas/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.