Set up SCIM for a customer

As a Reseller you can create a SCIM integration for a customer (sub-company) so that customer can sync target users from their identity provider (Entra ID, Okta, OneLogin, JumpCloud, etc.) into Keepnet. The SCIM integration is created in the customer’s context, not your Reseller company. Get the customer’s Company ID, then call the SCIM endpoints with X-KEEPNET-Company-Id. Use a credential with Client Role = Reseller. After creation, share the returned SCIM token and endpoint URL with the customer so they can configure their IdP.


POST /api/companies/search

Get the customer’s Company ID. Use the resourceId of the desired company in the next steps.

Retrieves a paginated list of all companies you manage with license details. Each item includes resourceId — use it as the Company ID for scoped requests. Test it: Authorize with Client ID/Secret, then Send — request body is pre-filled.

Retrieves a list of all companies

post
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Body
pageNumberintegerRequiredExample: 1
pageSizeintegerRequiredExample: 10
orderBystringRequiredExample: CreateTime
ascendingbooleanRequiredExample: false
isTargetUserCountExceededLimitbooleanOptional

If true, only companies exceeding license limit are returned

Example: false
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post
/api/companies/search
200

OK

From the response, pick the company and note its resourceId. Example: "resourceId": "xC5kfGz7w2Nz" → use xC5kfGz7w2Nz as Company ID when creating the SCIM integration.


GET /api/scim/fields

Returns available SCIM fields for mapping (e.g. IdP attributes to Keepnet custom fields). Send X-KEEPNET-Company-Id for the customer.

Returns all available scim fields. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Returns all available scim fields

get
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
get
/api/scim/fields
200

OK

Target group: To sync users into a specific target group, get the customer's target groups via the target-groups API with the same header. Pass groupResourceId in the create-SCIM request; if omitted, synced users appear under Target Users > People.


POST /api/scim

Creates a new SCIM integration for that customer. Send the Company ID in the X-KEEPNET-Company-Id header. The request body requires name (e.g. "Entra ID Sync"). Optional: groupResourceId (target group to sync users into), groupBySCIMFieldResourceId (e.g. group by department), fieldMappings (array of SCIM attribute → custom field mapping), syncPlatformGroup (boolean). The response includes the SCIM token and endpoint URL — the customer uses these in their identity provider to complete the SCIM setup.

Creates a new scim integration. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId> so the integration is created for the chosen customer. Test it: Endpoints → SCIMCreates a new scim integration — use dummy data (H8d) and set the header to a Company ID from companies/search.

Creates a new scim integration

post
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Body
namestring · min: 1 · max: 30Required
groupResourceIdstring · max: 12 · nullableOptional
groupBySCIMFieldResourceIdstring · max: 12 · nullableOptional
syncPlatformGroupbooleanOptional
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post
/api/scim
200

OK

Example request headers:

Example body (dummy data — minimal; syncs users to no specific group):

With an optional target group (use a valid groupResourceId for that customer):

After creation, provide the customer with the SCIM token and the Keepnet SCIM base URL from the response so they can configure their IdP (e.g. SCIM Setup in Entra ID, Okta, etc.).


POST /api/scim/search

List SCIM integrations for that customer. Send X-KEEPNET-Company-Id.

Returns a list of the scim integrations. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Returns a list of the scim integrations

post
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Body
pageNumberinteger · int32Optional
pageSizeinteger · int32Optional
orderBystring · nullableOptional
ascendingbooleanOptional
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post
/api/scim/search
200

OK


GET /api/scim/{resourceId}

Get SCIM integration details. Replace {resourceId} with the SCIM integration ID from the search response. Send X-KEEPNET-Company-Id.

Retrieves the details of an existing scim setting. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Retrieves the details of an existing scim setting

get
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Path parameters
resourceIdstringRequired
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
get
/api/scim/{resourceId}
200

OK


PUT /api/scim/{resourceId}

Update the SCIM integration (e.g. name, field mappings). Replace {resourceId} with the SCIM integration ID. Send X-KEEPNET-Company-Id.

Updates an existing scim integration. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Updates an existing scim integration

put
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Path parameters
resourceIdstringRequired
Body
namestring · nullableOptional
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
put
/api/scim/{resourceId}
200

OK


POST /api/scim/{resourceId}/revoke

Revoke the current token and generate a new one (e.g. if the token was exposed). Replace {resourceId} with the SCIM integration ID. Send X-KEEPNET-Company-Id.

Revokes the current token of the scim integration and generates a new token. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Revokes the current token of the scim integration and generates a new token

post
chevron-right
lockRequired scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Path parameters
resourceIdstringRequired
Responses
chevron-right
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post
/api/scim/{resourceId}/revoke
200

OK


Common errors

  • 403 Forbidden — Credential is not Reseller, or the Company ID is not one you manage. Set Client Role = Reseller. Roles and permissions →

  • 401 Unauthorized — Missing or invalid token. Request a new token via POST /connect/token.

  • 404 Not Found / 400 Bad Request — Invalid Company ID or invalid groupResourceId (must be a target group belonging to that customer). Verify Company ID from POST /api/companies/search and ensure you send X-KEEPNET-Company-Id for the customer.

Related: Scope API requests to a customer →. List or export target users for a customer →. For SCIM setup in the UI and IdP-specific guides: Getting Started with SCIM.

Last updated