SCIM
Provision and manage Trint users and groups from your identity provider using SCIM 2.0.
The SCIM API lets an identity provider create, update and deactivate Trint user accounts and groups automatically, so joiners and leavers are handled without anyone touching the Trint admin UI.
Trint's implementation conforms to SCIM 2.0 as defined by the three RFCs that make up the specification:
- RFC 7642 — Definitions, Overview, Concepts and Requirements. The use cases and provisioning scenarios SCIM is designed around.
- RFC 7643 — Core Schema. The
UserandGroupresource definitions, attribute types and common attributes such asmetaandexternalId. - RFC 7644 — Protocol. The endpoints, the
application/scim+jsonmedia type, filtering, paging andPATCHsemantics.
Because it follows the standard, the resource shapes and filter syntax below will look familiar if you have integrated SCIM elsewhere, and off-the-shelf SCIM connectors work against it. Where the specification makes a feature optional, use Service provider configuration to confirm what this deployment supports before relying on it.
For an introduction to what SCIM is and why you would use it, see the SCIM guide.
SCIM is a partner API
Unlike the rest of the Trint API, SCIM is not enabled with a self-service API key. Trint issues OAuth 2.0 client credentials to the identity-provider partner, who uses them to run OAuth flows on behalf of Trint customers. Contact your account manager or support@trint.com to start onboarding.
Base URLs
The SCIM service is deployed per tenant, and each tenant has its own authorization server. Use the pair that matches the customer's tenant — see US vs EU Tenant if you are not sure which that is.
| Tenant | SCIM base URL | Authorization server |
|---|---|---|
| US | https://scim.trint.com/v2 | https://auth.trint.com |
| EU | https://scim.eu.trint.com/v2 | https://auth.eu.trint.com |
Authentication
Every request must carry a bearer token issued by the authorization server for the customer's tenant, using the audience and scopes below.
| Setting | Value |
|---|---|
| Audience | https://apis.trint.com/scim-api |
| Scopes | https://apis.trint.com/scim-api/provisioning, offline_access |
Request the token from the tenant's /oauth/token endpoint, then send it as a bearer token:
curl --request GET \
--url 'https://scim.trint.com/v2/Users?count=10' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Accept: application/scim+json'SCIM uses its own media type
SCIM requests and responses use application/scim+json rather than application/json, as required by RFC 7644. Send it as your Content-Type on writes and accept it on reads.
Service provider configuration
Discover which parts of SCIM this deployment supports before you rely on them. Trint currently supports PATCH and filtering (up to 100 results), and does not support bulk operations, sorting, ETags or password changes.
curl --request GET \ --url 'https://scim.trint.com/v2/ServiceProviderConfig' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
],
"patch": {
"supported": true
},
"bulk": {
"supported": false,
"maxPayloadSize": 0,
"maxOperations": 0
},
"filter": {
"supported": true,
"maxResults": 100
},
"changePassword": {
"supported": false
},
"sort": {
"supported": false
},
"etag": {
"supported": false
},
"documentationUri": "https://developer.trint.com/reference/scim/",
"authenticationSchemes": [
{
"name": "OAuth 2.0",
"description": "Authorisation using an OAuth 2.0 issued token",
"type": "oauth2",
"primary": true
}
],
"meta": {
"location": "https://scim.trint.com/v2/ServiceProviderConfigs",
"resourceType": "ServiceProviderConfig"
}
}200Successful operation401Unauthorized — the access token is missing, expired or invalid.Schemas
Retrieve the SCIM resource schemas this deployment exposes, including each attribute's type, mutability and uniqueness. Useful for validating your attribute mapping during onboarding.
curl --request GET \ --url 'https://scim.trint.com/v2/Schemas' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 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",
"meta": {
"resourceType": "Schema",
"location": "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
},
"attributes": [
{
"name": "userName",
"type": "string",
"multiValued": false,
"description": "Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users. REQUIRED",
"caseExact": false,
"required": true,
"mutability": "immutable",
"returned": "default",
"uniqueness": "server"
},
{
"name": "name",
"type": "complex",
"multiValued": false,
"description": "The components of the user's real name.",
"required": true,
"subAttributes": [
{
"name": "familyName",
"type": "string",
"multiValued": false,
"description": "The family name of the User, or last name in most Western languages (e.g., 'Jensen' given the full name 'Ms. Barbara J Jensen, III'",
"required": true,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "givenName",
"type": "string",
"multiValued": false,
"description": "The given name of the User, or first name in most Western languages (e.g., 'Barabara' given the full name 'Ms. Barbara J Jensen, III'",
"required": true,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
}
],
"returned": "default"
},
{
"name": "emails",
"type": "complex",
"multiValued": true,
"description": "Email addresses for the user. The value SHOULD be canonicalized by the service provider, e.g., 'bjensen@example.com' instead of 'bjensen@EXAMPLE.COM'. Canonical type values of 'work', 'home', and 'other'.",
"required": false,
"subAttributes": [
{
"name": "value",
"type": "string",
"multiValued": false,
"description": "Email addresses for the user. The value SHOULD be canonicalized by the service provider, e.g., 'bjensen@example.com' instead of 'bjensen@EXAMPLE.COM'. Canonical type values of 'work', 'home', and 'other'.",
"required": false,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "type",
"type": "string",
"multiValued": false,
"description": "A label indicating the attribute's function, e.g., 'work' or 'home'.",
"required": false,
"caseExact": false,
"canonicalValues": [
"work",
"home",
"other"
],
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "primary",
"type": "boolean",
"multiValued": false,
"description": "A Boolean value indicating the 'primary' or preferred attribute value for this attribute, e.g., the preferred mailing address or primary email address. The primary attribute value 'true' MUST appear no more than once.",
"required": false,
"mutability": "readWrite",
"returned": "default"
}
],
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "active",
"type": "boolean",
"multiValued": false,
"description": "A Boolean value indicating the User's administrative status.",
"required": false,
"mutability": "readWrite",
"returned": "default"
},
{
"name": "externalId",
"type": "string",
"multiValued": false,
"description": "An identifier for the resource as defined by the provisioning client",
"required": false,
"mutability": "readWrite",
"caseExact": true,
"returned": "default",
"uniqueness": "none"
}
]
},
{
"id": "urn:ietf:params:scim:schemas:core:2.0:Group",
"name": "Group",
"description": "Group",
"meta": {
"resourceType": "Schema",
"location": "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group"
},
"attributes": [
{
"name": "displayName",
"type": "string",
"multiValued": false,
"description": "A human-readable name for the Group. REQUIRED",
"required": true,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "members",
"type": "complex",
"multiValued": true,
"description": "A list of members of the Group.",
"required": false,
"mutability": "readWrite",
"returned": "default",
"subAttributes": [
{
"name": "value",
"type": "string",
"multiValued": false,
"description": "Identifier of the members of this Group.",
"required": false,
"caseExact": false,
"mutability": "immutable",
"returned": "default",
"uniqueness": "none"
},
{
"name": "$ref",
"type": "reference",
"referenceTypes": [
"User"
],
"multiValued": false,
"description": "The URI corresponding to a SCIM resource that is a member of this Group.",
"required": false,
"caseExact": false,
"mutability": "immutable",
"returned": "default",
"uniqueness": "none"
},
{
"name": "type",
"type": "string",
"multiValued": false,
"description": "A label indicating the type of resource, e.g Group",
"required": false,
"caseExact": false,
"canonicalValues": [
"User"
],
"mutability": "immutable",
"returned": "default",
"uniqueness": "none"
}
]
}
]
}
]
}200Successful operation401Unauthorized — the access token is missing, expired or invalid.500Internal server errorGet a resource schema by Id
https://scim.trint.com/v2/Schemas/{id}Path parameters
idstringrequiredUser Id
Allowed: User, Group, urn:ietf:params:scim:schemas:core:2.0:User, urn:ietf:params:scim:schemas:core:2.0:Group
curl --request GET \ --url 'https://scim.trint.com/v2/Schemas/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"id": "urn:ietf:params:scim:schemas:core:2.0:User",
"name": "User",
"description": "User Account",
"meta": {
"resourceType": "Schema",
"location": "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
},
"attributes": [
{
"name": "userName",
"type": "string",
"multiValued": false,
"description": "Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users. REQUIRED",
"caseExact": false,
"required": true,
"mutability": "immutable",
"returned": "default",
"uniqueness": "server"
},
{
"name": "name",
"type": "complex",
"multiValued": false,
"description": "The components of the user's real name.",
"required": true,
"subAttributes": [
{
"name": "familyName",
"type": "string",
"multiValued": false,
"description": "The family name of the User, or last name in most Western languages (e.g., 'Jensen' given the full name 'Ms. Barbara J Jensen, III'",
"required": true,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "givenName",
"type": "string",
"multiValued": false,
"description": "The given name of the User, or first name in most Western languages (e.g., 'Barabara' given the full name 'Ms. Barbara J Jensen, III'",
"required": true,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
}
],
"returned": "default"
},
{
"name": "emails",
"type": "complex",
"multiValued": true,
"description": "Email addresses for the user. The value SHOULD be canonicalized by the service provider, e.g., 'bjensen@example.com' instead of 'bjensen@EXAMPLE.COM'. Canonical type values of 'work', 'home', and 'other'.",
"required": false,
"subAttributes": [
{
"name": "value",
"type": "string",
"multiValued": false,
"description": "Email addresses for the user. The value SHOULD be canonicalized by the service provider, e.g., 'bjensen@example.com' instead of 'bjensen@EXAMPLE.COM'. Canonical type values of 'work', 'home', and 'other'.",
"required": false,
"caseExact": false,
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "type",
"type": "string",
"multiValued": false,
"description": "A label indicating the attribute's function, e.g., 'work' or 'home'.",
"required": false,
"caseExact": false,
"canonicalValues": [
"work",
"home",
"other"
],
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "primary",
"type": "boolean",
"multiValued": false,
"description": "A Boolean value indicating the 'primary' or preferred attribute value for this attribute, e.g., the preferred mailing address or primary email address. The primary attribute value 'true' MUST appear no more than once.",
"required": false,
"mutability": "readWrite",
"returned": "default"
}
],
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none"
},
{
"name": "active",
"type": "boolean",
"multiValued": false,
"description": "A Boolean value indicating the User's administrative status.",
"required": false,
"mutability": "readWrite",
"returned": "default"
},
{
"name": "externalId",
"type": "string",
"multiValued": false,
"description": "An identifier for the resource as defined by the provisioning client",
"required": false,
"mutability": "readWrite",
"caseExact": true,
"returned": "default",
"uniqueness": "none"
}
]
}200Successful operation404Not found500Internal server errorResource types
List the resource types available, and the endpoint that serves each one. Trint exposes two: User at /Users and Group at /Groups.
curl --request GET \ --url 'https://scim.trint.com/v2/ResourceTypes' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 2,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:ResourceType"
],
"id": "User",
"name": "User",
"endpoint": "/Users",
"description": "User Account",
"schema": "urn:ietf:params:scim:schemas:core:2.0:User",
"meta": {
"location": "https://scim.trint.com/v2/ResourceTypes/User",
"resourceType": "ResourceType"
}
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:ResourceType"
],
"id": "Group",
"name": "Group",
"endpoint": "/Groups",
"description": "Group",
"schema": "urn:ietf:params:scim:schemas:core:2.0:Group",
"meta": {
"location": "https://scim.trint.com/v2/ResourceTypes/Group",
"resourceType": "ResourceType"
}
}
]
}200Successful operation401Unauthorized — the access token is missing, expired or invalid.500Internal server errorGet a resource type by Id
https://scim.trint.com/v2/ResourceTypes/{id}Path parameters
idstringrequiredresourceType Id
Allowed: User, Group
curl --request GET \ --url 'https://scim.trint.com/v2/ResourceTypes/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:ResourceType"
],
"id": "User",
"name": "User",
"endpoint": "/Users",
"description": "User Account",
"schema": "urn:ietf:params:scim:schemas:core:2.0:User",
"meta": {
"location": "https://scim.trint.com/v2/ResourceTypes/User",
"resourceType": "ResourceType"
}
}200Successful operation404Not found500Internal server errorUsers
A Trint SCIM user maps to a Trint account. userName must be an email address, and active controls whether the account is enabled — deactivating a user is how you offboard someone.
List users
Return a paged list of users. Use filter to look a user up by attribute (for example userName eq "devtest@trint.com"), and startIndex/count to page. Filtering returns at most 100 results per page.
Search or list users
https://scim.trint.com/v2/UsersQuery parameters
filterstringoptionalFilter expression for querying a subset of resources
startIndexinteger (int32)optionalStart index (1-based)
countinteger (int32)optionalPage size
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
curl --request GET \ --url 'https://scim.trint.com/v2/Users' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"itemsPerPage": 2,
"startIndex": 1,
"totalResults": 10,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"meta": {
"resourceType": "User",
"created": "2022-12-02T09:48:14.218Z",
"lastModified": "2022-12-02T09:48:14.678Z",
"location": "https://scim.trint.com/v2/Users/6784c3a4ed66dec96ffcf035"
},
"userName": "devtest1@trint.com",
"name": {
"givenName": "Dev",
"familyName": "Trint"
},
"active": true,
"id": "6784c3a4ed66dec96ffcf035",
"emails": []
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"meta": {
"resourceType": "User",
"created": "2022-12-02T09:48:14.218Z",
"lastModified": "2022-12-02T09:48:14.678Z",
"location": "https://scim.trint.com/v2/Users/6888f6f88ee1631c0f182be8"
},
"userName": "devtest2@trint.com",
"name": {
"givenName": "Dev",
"familyName": "Trint"
},
"active": true,
"id": "6888f6f88ee1631c0f182be8",
"emails": []
}
]
}200Successful operation400Bad request401Authorization failure403Permissions denied500Internal server errorSearch users
The same query as List users, but with the filter and paging parameters supplied in a request body instead of the query string. Use this when a filter would be too long or awkward to URL-encode.
Search or list users
https://scim.trint.com/v2/Users/.searchQuery parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
countinteger (int32)optionalPage size
filterstringoptionalOnly supported for /User and /Group endpoints
schemasarray of stringoptionalAllowed: urn:ietf:params:scim:api:messages:2.0:SearchRequest
startIndexinteger (int32)optionalStart index (1-based)
curl --request POST \ --url 'https://scim.trint.com/v2/Users/.search' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 200
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"itemsPerPage": 2,
"startIndex": 1,
"totalResults": 10,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"meta": {
"resourceType": "User",
"created": "2022-12-02T09:48:14.218Z",
"lastModified": "2022-12-02T09:48:14.678Z",
"location": "https://scim.trint.com/v2/Users/6784c3a4ed66dec96ffcf035"
},
"userName": "devtest1@trint.com",
"name": {
"givenName": "Dev",
"familyName": "Trint"
},
"active": true,
"id": "6784c3a4ed66dec96ffcf035",
"emails": []
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"meta": {
"resourceType": "User",
"created": "2022-12-02T09:48:14.218Z",
"lastModified": "2022-12-02T09:48:14.678Z",
"location": "https://scim.trint.com/v2/Users/6888f6f88ee1631c0f182be8"
},
"userName": "devtest2@trint.com",
"name": {
"givenName": "Dev",
"familyName": "Trint"
},
"active": true,
"id": "6888f6f88ee1631c0f182be8",
"emails": []
}
]
}200Returns a list of users400Bad request401Authorization failure403Permissions denied500Internal server errorProvision a user
Provision a new Trint account. schemas, userName and name are required. Supply your own externalId to correlate the Trint record with the user in your directory. Returns 409 if a user with that userName already exists.
Create a user
https://scim.trint.com/v2/UsersQuery parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
activebooleanoptionalUser status
emailsarray of objectoptionalexternalIdstringoptionalExternal unique resource Id defined by provisioning client
idstringoptionalUnique resource Id
namestringrequiredschemasarray of stringrequiredAllowed: urn:ietf:params:scim:schemas:core:2.0:User
userNamestringrequiredMUST be an email address
curl --request POST \ --url 'https://scim.trint.com/v2/Users' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 201
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"active": true,
"externalId": "randomId",
"name": {
"formatted": "Dev Test",
"familyName": "Dev",
"givenName": "Test"
},
"emails": [
{
"type": "work",
"value": "devtest@trint.com",
"primary": true
}
],
"userName": "devtest@trint.com"
}201Successfully created user400Bad request401Authorization failure403Permissions denied409Duplicate email500Internal server errorRetrieve a user
Fetch a single user by their Trint SCIM id — the value returned in id when the user was created, not their externalId.
Get a user by Id
https://scim.trint.com/v2/Users/{id}Path parameters
idstringrequiredUser Id
Query parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
curl --request GET \ --url 'https://scim.trint.com/v2/Users/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"active": true,
"externalId": "randomId",
"name": {
"formatted": "Dev Test",
"familyName": "Dev",
"givenName": "Test"
},
"emails": [
{
"type": "work",
"value": "devtest@trint.com",
"primary": true
}
],
"userName": "devtest@trint.com"
}200Successful operation401Authorization failure403Permissions denied404Not found500Internal server errorReplace a user
Overwrite a user with the representation you supply. Any optional attribute you omit is cleared, so send the complete resource. To change individual attributes instead, use Patch a user.
Fully update/replace a user
https://scim.trint.com/v2/Users/{id}Path parameters
idstringrequiredUser Id
Query parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
activebooleanoptionalUser status
emailsarray of objectoptionalexternalIdstringoptionalExternal unique resource Id defined by provisioning client
idstringoptionalUnique resource Id
namestringrequiredschemasarray of stringrequiredAllowed: urn:ietf:params:scim:schemas:core:2.0:User
userNamestringrequiredMUST be an email address
curl --request PUT \ --url 'https://scim.trint.com/v2/Users/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName": "devtest@trint.com",
"name": {
"formatted": "Dev Test",
"familyName": "Dev",
"givenName": "Test"
},
"emails": [
{
"type": "work",
"value": "devtest@trint.com",
"primary": true
}
]
}200Successfully fully updated a user400Bad request401Authorization failure403Permissions denied404Not found500Internal server errorPatch a user
Apply a targeted change without sending the whole resource. Each entry in Operations has an op (add, replace or remove) and a path; value may be a scalar, an object or an array depending on the attribute you are targeting. This is the usual way to deactivate a user (replace active with false).
Partially update/patch a user
https://scim.trint.com/v2/Users/{id}Path parameters
idstringrequiredUser Id
Body parameters
Operationsarray of objectrequiredPatch operations list
schemasarray of stringrequiredAllowed: urn:ietf:params:scim:api:messages:2.0:PatchOp
curl --request PATCH \ --url 'https://scim.trint.com/v2/Users/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"active": true,
"externalId": "randomId",
"name": {
"formatted": "Dev Test",
"familyName": "Dev",
"givenName": "Test"
},
"emails": [
{
"type": "work",
"value": "trintdev@trint.com",
"primary": true
}
],
"userName": "devtest@trint.com"
}200Successfully partially updated user400Bad request401Authorization failure403Permissions denied404Not found500Internal server errorRemove a user account
Permanently remove the user's Trint account. Returns 204 with no body.
Deletion is not reversible
Prefer patching active to false to offboard someone — that disables the account while preserving their content. Use DELETE only when the account genuinely must be removed.
curl --request DELETE \ --url 'https://scim.trint.com/v2/Users/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 401
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error"
],
"detail": "Unauthorized",
"status": "401"
}204Successfully deleted401Authorization failure403Permissions denied404Not found500Internal server errorGroups
Groups collect users together. Each entry in members references a user by their SCIM id.
List groups
Return a paged list of groups, with the same filter, startIndex and count parameters as List users.
Search or list groups
https://scim.trint.com/v2/GroupsQuery parameters
filterstringoptionalFilter expression for querying a subset of resources
startIndexinteger (int32)optionalStart index (1-based)
countinteger (int32)optionalPage size
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
curl --request GET \ --url 'https://scim.trint.com/v2/Groups' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"itemsPerPage": 20,
"startIndex": 1,
"totalResults": 3,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2022-05-23T13:03:03.560Z",
"lastModified": "2022-09-02T12:26:47.925Z",
"location": "https://scim.trint.com/v2/Groups/W6bfHfS1V4ykw2hHCat_IU"
},
"displayName": "Dev Team 1",
"id": "W6bfHfS1V4ykw2hHCat_IU",
"members": [
{
"value": "67e0f592c3f5f7ea18041f35",
"type": "User"
},
{
"value": "6865cad45eb9190d5ecee995",
"type": "User"
}
]
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2022-05-23T13:03:11.257Z",
"lastModified": "2022-09-08T11:26:44.473Z",
"location": "https://scim.trint.com/v2/Groups/2SXGk4r-MwuuEsXKAxSDmu"
},
"displayName": "Dev Team 2",
"id": "2SXGk4r-MwuuEsXKAxSDmu",
"members": [
{
"value": "67a0d43daf33fdaa97de74a4",
"type": "User"
},
{
"value": "6887b33ea49859f50764ef70",
"type": "User"
}
]
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2023-01-10T11:56:20.368Z",
"lastModified": "2023-01-10T11:56:20.368Z",
"location": "https://scim.trint.com/v2/Groups/rYsTOasl8GzYVFLJAE1uBw"
},
"displayName": "Dev Team 3",
"id": "rYsTOasl8GzYVFLJAE1uBw",
"members": []
}
]
}200Successful operation401Authorization failure403Permissions denied500Internal server errorSearch groups
The body-based equivalent of List groups, for filters that are impractical to send in a query string.
Search or list groups
https://scim.trint.com/v2/Groups/.searchQuery parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
countinteger (int32)optionalPage size
filterstringoptionalOnly supported for /User and /Group endpoints
schemasarray of stringoptionalAllowed: urn:ietf:params:scim:api:messages:2.0:SearchRequest
startIndexinteger (int32)optionalStart index (1-based)
curl --request POST \ --url 'https://scim.trint.com/v2/Groups/.search' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 200
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"itemsPerPage": 20,
"startIndex": 1,
"totalResults": 3,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2022-05-23T13:03:03.560Z",
"lastModified": "2022-09-02T12:26:47.925Z",
"location": "https://scim.trint.com/v2/Groups/W6bfHfS1V4ykw2hHCat_IU"
},
"displayName": "Dev Team 1",
"id": "W6bfHfS1V4ykw2hHCat_IU",
"members": [
{
"value": "67e0f592c3f5f7ea18041f35",
"type": "User"
},
{
"value": "6865cad45eb9190d5ecee995",
"type": "User"
}
]
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2022-05-23T13:03:11.257Z",
"lastModified": "2022-09-08T11:26:44.473Z",
"location": "https://scim.trint.com/v2/Groups/2SXGk4r-MwuuEsXKAxSDmu"
},
"displayName": "Dev Team 2",
"id": "2SXGk4r-MwuuEsXKAxSDmu",
"members": [
{
"value": "67a0d43daf33fdaa97de74a4",
"type": "User"
},
{
"value": "6887b33ea49859f50764ef70",
"type": "User"
}
]
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2023-01-10T11:56:20.368Z",
"lastModified": "2023-01-10T11:56:20.368Z",
"location": "https://scim.trint.com/v2/Groups/rYsTOasl8GzYVFLJAE1uBw"
},
"displayName": "Dev Team 3",
"id": "rYsTOasl8GzYVFLJAE1uBw",
"members": []
}
]
}200Returns a list of users400Bad request401Authorization failure403Permissions denied500Internal server errorCreate a new group
Create a group with a displayName, optionally populating members in the same request.
Create a group
https://scim.trint.com/v2/GroupsQuery parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
idstringoptionalUnique resource Id
displayNamestringrequiredName of the group
membersarray of objectoptionalschemasarray of stringrequiredAllowed: urn:ietf:params:scim:schemas:core:2.0:Group
curl --request POST \ --url 'https://scim.trint.com/v2/Groups' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 201
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Dev Team",
"members": [
{
"value": "67a0d43daf33fdaa97de74a4"
}
]
}201Successfully created group400Bad request401Authorization failure403Permissions denied500Internal server errorRetrieve a group
Fetch a single group by its SCIM id, including its current membership.
Get a group by Id
https://scim.trint.com/v2/Groups/{id}Path parameters
idstringrequiredGroup Id
Query parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
curl --request GET \ --url 'https://scim.trint.com/v2/Groups/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"created": "2022-09-06T08:07:48.313Z",
"lastModified": "2023-01-13T10:22:47.834Z",
"location": "https://scim.trint.com/v2/Groups/LH3Mr1nxKI-824c4MlfQi4"
},
"displayName": "Dev Team",
"id": "LH3Mr1nxKI-824c4MlfQi4",
"members": [
{
"value": "67a0d43daf33fdaa97de74a4"
}
]
}200Successful operation401Authorization failure403Permissions denied404Not found500Internal server errorReplace a group
Overwrite the group with the representation you supply. As with users, omitted optional attributes are cleared — including members, so send the full membership list or use Patch a group.
Fully update/replace a group
https://scim.trint.com/v2/Groups/{id}Path parameters
idstringrequiredGroup Id
Query parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
idstringoptionalUnique resource Id
displayNamestringrequiredName of the group
membersarray of objectoptionalschemasarray of stringrequiredAllowed: urn:ietf:params:scim:schemas:core:2.0:Group
curl --request PUT \ --url 'https://scim.trint.com/v2/Groups/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Dev Team",
"id": "LH3Mr1nxKI-824c4MlfQi4",
"members": [
{
"value": "67a0d43daf33fdaa97de74a4"
}
]
}200Successfully fully updated a group400Bad request401Authorization failure403Permissions denied404Not found500Internal server errorPatch a group
Add or remove individual members without resending the whole group. This is the efficient way to maintain membership on a large group.
Partially update/patch a group
https://scim.trint.com/v2/Groups/{id}Path parameters
idstringrequiredGroup Id
Query parameters
attributesarray of stringoptionalSCIM defined attributes parameter.
excludedAttributesarray of stringoptionalSCIM defined excludedAttribute parameter.
Body parameters
Operationsarray of objectrequiredPatch operations list
schemasarray of stringrequiredAllowed: urn:ietf:params:scim:api:messages:2.0:PatchOp
curl --request PATCH \ --url 'https://scim.trint.com/v2/Groups/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/scim+json' \
--data '{}'Response 200
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Dev Team",
"id": "LH3Mr1nxKI-824c4MlfQi4",
"members": [
{
"value": "67a0d43daf33fdaa97de74a4"
}
]
}200Successfully fully updated a group400Bad request401Authorization failure403Permissions denied404Not found500Internal server errorRemove a group
Remove the group. The users who belonged to it are not deleted — only the grouping is.
curl --request DELETE \ --url 'https://scim.trint.com/v2/Groups/:id' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response 401
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error"
],
"detail": "Unauthorized",
"status": "401"
}204Successfully deleted401Authorization failure403Permissions denied404Not found500Internal server error