strongDM SCIM API Specification

This feature set is currently in beta. Functionality and documentation may change.

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