strongDM SCIM API Specification

The strongDM SCIM 2.0 API allows apps that conform to the System for Cross-domain Identity Management (SCIM) specification to take advantage of our user and group provisioning capabilities. One example of this is JumpCloud. If an identity provider that you would like to connect to strongDM doesn't leverage the standard SCIM user object schema, some custom work may be needed to integrate with the strongDM SCIM API.

To leverage our SCIM API to connect to an identity provider that we don't have explicitly listed, go to the strongDM Admin UI’s Settings > User Management > Provisioning section and select the Generic provider option. Select activate and then use the generated bearer token with the integration you're configuring.

This document details the endpoints and functionalities supported for the SCIM protocol by strongDM's servers. These details cover the following:

  • The path to access the endpoint (e.g., GET /index.html)
  • The parameters the endpoint accepts
  • A description of what the endpoint will do when called
  • Example request and response bodies


All paths are served from strongDM's SCIM implementation serves different endpoints for different providers. For example:

GET /provisioning/generic/v2/Users
GET /provisioning/okta/v2/Users
GET /provisioning/azure/v2/Users

All of the listed endpoints use common logic. The behavior and response from strongDM when requests are sent to these different endpoints is currently identical, but the endpoints are maintained separately in case there are issues with malformed requests or other similar issues coming from only Okta or Azure clients. If such issues happen, those requests are segmented out, and strongDM can handle the issue efficiently and without impacting customers using the other endpoints.

The generic endpoints are used in this document and will never have additional logic added to fix malformed SCIM requests.

Data Format

SCIM requests and responses follow a REST interface and have JSON bodies. Request bodies must follow the appropriate SCIM schemas as returned from GET /provisioning/generic/v2/Schemas.

The returned schemas should match the examples in this documentation, but if the examples in the documentation disagree with the returned schemas, then these examples are not up to date, and the schemas should be followed.

General Notes

Groups in SCIM are translated to Roles within strongDM, so the two terms are synonymous in these examples.

All Users or Roles created by, modified by, or used in part of any SCIM endpoint request become marked as managed by an external party. Items returned by GET endpoints do not become marked in this way if they are not already marked. This marking prevents some actions from being taken in the Admin UI on those Users and Roles that could interfere with an ongoing synchronization from that external party.

CLI and API operations may interfere with SCIM synchronization. If CLI or API requests are used to update managed Users or Roles, it is possible that a custom SCIM sync job would not validate that the requested User or Role matches in strongDM, which could cause errors.

If this were to happen, requested changes made via the CLI or API to managed Users or Roles would be reverted as soon as the SCIM sync job notices, or the sync job would stop.

When a User is suspended via any action, they will lose their external management marking. A User who is suspended cannot be managed by an external party and suspension takes precedence over external management.

SCIM Groups