SCIM 2.0 API is Now Available on RingCentral
SCIM (or the System for Cross-domain Identity Management) is a standard IETF API used to provision and manage users. It’s primarily used by Single Sign-On (SSO) systems that must interoperate with many different services in a platform-independent manner. At RingCentral, we’ve added SCIM to our REST API to enable more seamless user management. Users added via SCIM will be automatically provisioned into RingCentral Office and Glip.
Our SCIM API is included in our:
- Configuration Article
- API Reference SCIM API
- OpenAPI / Swagger 2.0 API spec
- Postman 2.0 collection
- SDKs for statically typed languages: C#, Java
In addition to our core reference, our team has produced a stand-alone SCIM API specification and Postman collection.
RingCentral SCIM 2.0 API Overview
RingCentral supports a range of SCIM 2.0 user management APIs including the following:
- Get Service Provider Config (GET)
- Create User (POST)
- Get User (GET)
- Update User (PATCH)
- Replace User (PUT)
- Delete User(DELETE)
- Search Users by Get
- Search Users by Post
Some notes:
- Creating a user requires an unassigned extension must exist beforehand for that user to be provisioned into.
- Deleting a user will convert the user extension into an unassigned extension. Excess phone numbers will be released to the account.
For the most part the API, is a straight-forward REST API which you can learn more about in our linked API Reference and other resources. The API References lists the permissions required for each endpoint.
The Polymorphic Patch User Update
The most interesting part of the API is the Update User via PATCH which has a polymorphic request body. It can not only update specific fields in a user but filter for a set of users to update.
https://tools.ietf.org/html/rfc7644#section-3.5.2
Here’s an example from page 44 of RFC 7644 that shows replacing a work address for all users.
PATCH /Users/2819c223-7f76-453a-919d-413861904646
Host: example.com
Accept: application/scim+json
Content-Type: application/scim+json
Authorization: Bearer h480djs93hd8
If-Match: W/"a330bc54f0671c9"
{
"schemas":
["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{
"op":"replace",
"path":"addresses[type eq \"work\"]",
"value":
{
"type": "work",
"streetAddress": "911 Universal City Plaza",
"locality": "Hollywood",
"region": "CA",
"postalCode": "91608",
"country": "US",
"formatted":
"911 Universal City Plaza\nHollywood, CA 91608 US",
"primary": true
}
}]
}
Client SDKs
SCIM endpoints and model classes are built into the following RingCentral statically-typed language SDKs.
- C#: https://github.com/ringcentral/ringcentral-csharp-client
- Java: https://github.com/ringcentral/ringcentral-java
- Go: https://github.com/grokify/go-ringcentral (Community)
Dynamically-typed language SDKs for languages like JavaScript, PHP, Python and Ruby, do not need support for specific endpoints and are good to go as-is.
If you need SCIM support for a SDK we don’t support, such as APEX, please check out the Swagger Codegen project.
Support
If you have any questions on using SCIM, please reach out to us on our Community or Stack Overflow:
- Community: https://devcommunity.ringcentral.com
- Stack Overflow: https://stackoverflow.com/questions/tagged/ringcentral