StrongDM SCIM API Specification

Last modified on March 24, 2023

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.

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 (for example, GET /index.html)
  • The parameters the endpoint accepts
  • A description of what the endpoint does when called
  • Example request and response bodies

Paths

All paths are served from app.strongdm.com. 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.

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.

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

You can find resources and information about the following StrongDM topics in this section: