YOUR_... placeholders with your own values.
SCIM Playground
The SCIM Playground at scim.dev (https://api.scim.dev) is a free, live SCIM 2.0 test API. Because it’s a sandbox, it’s a safe place to try the full write lifecycle. Get an API key from your scim.dev environment, or create an OAuth client there for the client credentials flow.
Configuration. These are the configurations that ship with the connector for the SCIM Playground. Settings: base_url = https://api.scim.dev, Token credential (your scim.dev API key) sent in the Authorization header with the Bearer prefix. For OAuth client credentials instead, use an OAuth client-credentials credential with OAuth Token URL https://idp.scim.dev/oauth/token.
Accounts Config:
"value": true):
Databricks
Account-level SCIM over OAuth client credentials, with the full write lifecycle verified end to end (create, assign, unassign, deactivate, activate, delete).- Base host is the account console per cloud:
accounts.cloud.databricks.com(AWS),accounts.azuredatabricks.net(Azure),accounts.gcp.databricks.com(GCP). You provide an account ID and an account-level service principal, not a workspace URL. - Token endpoint is
<base>/oidc/accounts/{account_id}/v1/tokenwithclient_secret_basic, and theall-apisscope is required via theoauth_scopessetting. - Gotcha one: Databricks’ SCIM Groups list omits
members, so associations useentitlement_fanoutmode (fetch each group individually and read its members), not flat endpoint mode. - Gotcha two: membership edits on the built-in
account userssystem group return403 PERMISSION_DENIED. Assign to custom groups only.
base_url = https://accounts.cloud.databricks.com (or your cloud’s account console host), OAuth client-credentials credential (service principal id and secret), OAuth Client Secret via HTTP Basic enabled, OAuth Scopes all-apis, OAuth Token URL <base>/oidc/accounts/YOUR_ACCOUNT_ID/v1/token.
Accounts Config:
"value": true):
ADP Workforce Now
OAuth client credentials over mTLS. ADP requires a client certificate on the token endpoint and on every API call, which the connector handles through theclient_cert_pem and client_key_pem settings, presented on both the token exchange and data requests.
- Base URL
https://api.adp.com, token endpointhttps://accounts.adp.com/auth/oauth/v2/token. - Accounts come from
GET /hr/v2/workerswith$skip/$toppaging, mappingassociateOID, the worker’s name, andworkerStatus. - You supply the service principal client ID and secret, and paste your ADP client certificate and private key as PEM.
base_url = https://api.adp.com, OAuth client-credentials credential, Client Certificate (PEM) and Client Private Key (PEM) set to your ADP certificate pair.
Accounts Config (note the $skip/$top OData-style paging starting at 0, and the nested status path):
Salesforce
The deepest example: OAuth 2.0 in both flows Salesforce supports (authorization code and client credentials), reads as SOQL queries with thenextRecordsUrl cursor, and writes as SObject REST calls.
- Entitlements come from two typed blocks, permission sets and groups, and associations from two endpoint blocks reading the junction objects (
PermissionSetAssignment,GroupMember). - Last activity maps
LastLoginDatefrom the User object.DepartmentandTitlesurface as custom attributes. - Writes cover assign, create, activate, deactivate, and update.
- Where the boundary sits: unassigning a permission set requires deleting a junction record whose id needs a lookup query first, and Salesforce deactivates rather than deletes users. Both are out of a single templated call’s reach, which is why the dedicated Salesforce connector in the Integration Library remains the recommended path for full provisioning.
base_url = https://your-instance.my.salesforce.com, OAuth credential.
Accounts Config (a SOQL query as the endpoint, with the nextRecordsUrl cursor):
type must be unique):
IsActive to true):
GitHub
Read-only, demonstrating RFC-5988 Link-header pagination (use_link_header: true).
- Token credential: a classic PAT with
read:org, or a fine-grained token with organization Members read access, sent as Bearer. - Accounts from
GET /orgs/{org}/members, entitlements fromGET /orgs/{org}/teams. - Note: listing teams requires membership in the org. Against an org you don’t belong to it returns
403 permission_denied.
base_url = https://api.github.com, Token credential (the PAT).
Accounts Config (no records_path, since the response body is the array itself):
Datadog
Read-only, demonstrating two-header authentication and zero-based page-number pagination.- The
basiccredential’s username and password become theDD-API-KEYandDD-APPLICATION-KEYheader values. Theauth_headerandsecond_auth_headersettings hold the header names, never the secrets. - Site matters: the base URL must match your Datadog region (
api.datadoghq.com,api.datadoghq.eu,api.us3.datadoghq.com, and so on). A wrong-region host returns403 Forbiddeneven with valid keys. - The users and roles endpoints need the
user_access_readpermission, so use an Application key from a Datadog admin.
base_url = https://api.datadoghq.com, Basic credential (username = API key value, password = Application key value), Auth Header Name DD-API-KEY, Second Auth Header Name DD-APPLICATION-KEY. The header-name settings hold names only, the secrets live on the credential.
Accounts Config (zero-based page-number pagination with bracketed params):
HubSpot
Read-only, demonstrating a nested body-token cursor: the next-page token is read frompaging.next.after in the response body and echoed back as the after query parameter.
- Token credential: a Private App token with the
crm.objects.contacts.readscope. - The example maps CRM contacts as accounts to guarantee pagination volume. For an identity-object mapping, point the same config shape at
/settings/v3/usersinstead.
base_url = https://api.hubapi.com, Token credential (the Private App token).
Accounts Config (body-token cursor: read paging.next.after, echo back as ?after=):
Google Play Store
OAuth authorization code with Google’s consent quirks handled, and a clear illustration of the connector’s boundary.- The consent URL must carry
access_type=offlineandprompt=consentviaoauth_extra_authorize_params, or Google never issues a refresh token. - Accounts come from the developer users endpoint, and associations use
account_attributemode, reading each user’s embedded permission list.
base_url = https://androidpublisher.googleapis.com, OAuth credential.
Accounts Config (the required pageSize=-1 is baked into the path, so pagination is none; note two active values):
attribute_entitlement_id_path is needed):
response_id_path is email, since Google Play identifies developer users by email rather than an opaque id: