Skip to main content

SCIM API Reference

Manage people in a workspace

SCIM is used by Single Sign-On (SSO) services and identity providers to manage people across a variety of tools. Our SCIM implementation targets version 2.0 of the protocol. You can find the RFC here.

Nova Credit supports member provisioning via helper apps with supported identity providers.

Note that SCIM actions cannot be undone. Please test your scripts thoroughly before executing them. Our customer support team is ready to assist you should you run into any trouble.

Accessing the SCIM API

The SCIM API is a proper REST API.

The base URL for all calls to the SCIM API is https://dashboard.novacredit.com/user/sso/scim. All SCIM methods are branches of this base URL.

Acquire a Bearer token

A bearer token for your organization is required to access the SCIM API.

To acquire a token:

  • Visit the Nova Credit Dashboard, and navigate to your SSO settings.
  • Make sure your SSO settings are properly configured, and that SCIM is enabled.
  • Visit the SCIM credentials page.
  • Your API url and bearer token should be available.

Use the token in a SCIM API request

The API token must be base64 encoded and included via an Authorization header with a type of Bearer when calling any of the SCIM methods.

Provide a JSON request body for POST, PUT, and PATCH write operations. Your HTTP Content-Type header can be application/json or application/scim+json.

A SCIM call may take a form like this:

 GET /Users HTTP/1.1
Host: api.novacredit.com
Accept: application/scim+json
Authorization: Bearer ...

Installing the Nova Credit app in Microsoft Entra

In order to use the SCIM API via Microsoft Entra provisioning, you'll need to install the Nova Credit app and map the appropriate attributes (detailed below) in the Provisioning menu. More details can be found here.

If you are using Entra Groups for easier role management, you need to disable Provision Microsoft Entra ID Groups as these endpoints are not implemented.

Mapping roles

In order to ensure the proper format is sent to our API, you'll need to set up the roles mapping in a specific way in Entra. First, make sure you configure custom app roles for each role you intend to assign to your members. Make sure the Display name field matches the format described below. Once your app roles are created and assigned to your users, you should either map the roles.display attribute to the expression SingleAppRoleAssignment([appRoleAssignments]) for single-role users, or map the roles attribute to AppRoleAssignmentsComplex([appRoleAssignments]) for multiple-role users (i.e., if you have multiple child organizations and you want to assign a different role per organization to a user). More details on attribute mapping can be found here.

Active attribute

In order to appropriately deprovision users the active attribute needs to be defined. | Field | Value | | :--- | :--- | | Mapping type | Expression| | Expression | Switch([IsSoftDeleted], , "False", "True", "True", "False")| | Target attribute | active|

Installing the Nova Credit app in Okta

In order to use the SCIM API via Okta provisioning, you'll need to install the Nova Credit app and map the appropriate attributes (detailed below).

Scim settings

  • Unique identifier field for users userName (must be a user's email address)
  • Supported provisioning actions - push new users push profile updates
  • Authentication Mode - HTTP Header

Mapping roles

To ensure roles are appropriately assigned to users in Okta you need to create a custom attribute to either Users or Groups (if you plan on using Groups for easier role management).

FieldValue
Data typestring array
Display nameRoles (up to user)
Variable nameroles
External nameroles
External namespaceurn:ietf:params:scim:schemas:core:2.0:User
Description(optional)
EnumEnable Define enumerated list of values
Attribute membersDisplay name and value should be CompanyName, PERMISSION
Attribute requiredYes
Attribute typePersonal or Group
MutabilityREAD_WRITE
Attribute typePersonal or Group
Group PriorityIf attribute type is Group then Combine values across groups

Schemas

Nova Credit currently only supports the Core User schema (defined here).

Endpoints

EndpointDescription
GET /UsersReturns a list of users. Note that deactivated users will not be retrieved by this endpoint
GET /Users/:idRetrieves a single user
POST /UsersCreates a user
PATCH /Users/:idUpdates an existing user, overwriting specified values
PUT /Users/:idUpdates an existing user, overwriting all values
DELETE /Users/:idDeactivates an existing user

User attributes

Attributes are the details associated with a user's account. These are the details that someone would typically see in their user account in the enterprise dashboard. The following table maps SCIM attributes to the profile fields that Nova Credit uses. Note that providing attribtues that are not supported will be ignored.

Nova Credit User AttributeSCIM AttributeDescription
user_id*idThe id of the user, as generated by Nova Credit
external_idexternalIdAn external identifier you may choose to attach to the user for your own record-keeping
email*userNameThe email of the user. Note that providing anything in the "email" SCIM attribute will be ignored
first_name*name.givenNameThe first name of the user
last_name*name.familyNameThe last name of the user
customer_id*rolesWhich entity this user has permissions for. Format must be as follows: "Company Name, ROLE", where Company Name is the name of the organization exactly as it is set up with Nova Credit, and ROLE is the role you would like to assign (see list of roles below). This field is case sensitive.
permission*rolesThe permissions the user has for your organization when accessing the Nova Credit Dashboard. See formatting rules above.
scim_active*activeWhether or not the user is active or soft deleted.

* REQUIRED

Permissions

Below is a list of permissions that can be granted to users with a brief overview of the roles that may be assigned to users.

Nova Credit User RoleAvailable ActionsAccess
ADMINCreate and archive child accounts; Request, download, archive and request reports again; View consumer PII and report summary; Create and edit customer products; Access all team management (e.g. invite team members, remove team members, reset password); Customize branding; Access API explorer; Access production keys; Refresh webhooksAll data in both environments (production and sandbox)
PROTECTED_ADMINArchive child accounts but can create new accounts in sandbox only; Request report in all environment (but can only download, archive in sandbox); View consumer PII, report summary in sandbox only; Create and edit products; Access to protected team management only (e.g. invite, edit protected team members); Customize branding; Access API explorer; Access production keys; Refresh webhooksAll data in both environments (production and sandbox)
COLLABORATORView child accounts (but cannot add, remove or edit); Request, download, archive and request reports again but cannot export Activity page; View consumer PII and report summary; View team members (but cannot add, remove or invite)All data except Developer, Products tab; Cannot switch between production and sandbox environment (access to production environment only after launch)
PROTECTED_COLLABORATORView child accounts (but cannot add, remove or edit); Request report in both environment but can download, archive and request reports again in sandbox only; View consumer PII and report summary in sandbox only; View team members (but cannot add, remove or invite)All data except Developer, Products tab; Cannot switch between production and sandbox environment (access to production environment only after launch)
DEVELOPERView child accounts (but cannot add, remove or edit); Request, download, archive and request reports again in sandbox only; Create products in sandbox only; Customize branding; access API explorer; Access production keys; Refresh webhooks in sandbox onlyAccounts, Attributes, Developer, Products, Settings tab in both environment; Analytics, Countries, Team in sandbox only
PROTECTED_DEVELOPERView child accounts (but cannot add, remove or edit); Request, download, archive and request reports again in sandbox only; Cannot switch between production and sandbox environment (access to production environment only after launch); Customize branding; Access API explorer; Access production keys; Refresh webhooks in sandbox onlyAccounts, Settings tab in both environment; Analytics, Attributes, Countries, Developer, Products, Team in sandbox only
VIEWERView data (but cannot edit)All data except Developer, Products tab; Cannot switch between production and sandbox environment (access to production environment only after launch)

Permissions per organization

This SCIM implementation can accept multiple roles, each with their own displayName. If you have a standalone organization, users should only have a single role defined. Attempting to add multiple roles will result in errors or unexpected results. The Company Name portion of the displayName may be set to ALL if you have multiple child organizations, to grant permissions at the parent level, otherwise it must be formatted as specified in the above table.

Example

These example requests provide detailed examples of which attributes Nova Credit uses, including multi-valued attributes.

GET /Users

Response (200):
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 3,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "766b7824-ad5d-421d-8318-4fc0cdb2143e",
"externalId": null,
"userName": "employee1@email.com",
"name": {
"formatted": "George Washington",
"familyName": "Washington",
"givenName": "George"
},
"emails": [
{
"value": "employee1@email.com",
"primary": true
}
],
"roles": [
{
"displayName": "Your Company Name, ADMIN"
}
],
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-03-13T18:05:06.137Z",
"lastModified": "2024-03-13T19:15:40.515Z",
"location": "https://api.aphrodite.novacredit.com/user/sso/scim/Users/766b7824-ad5d-421d-8318-4fc0cdb2143e"
}
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "282ab371-3dd5-42f4-b8bb-3e32e075928e",
"externalId": "123",
"userName": "employee2@email.com",
"name": {
"formatted": "Thomas Jefferson",
"familyName": "Jefferson",
"givenName": "Thomas"
},
"emails": [
{
"value": "employee2@email.com",
"primary": true
}
],
"roles": [
{
"displayName": "Your Company Name, ADMIN"
}
],
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-03-13T18:22:07.646Z",
"lastModified": "2024-03-13T19:49:41.461Z",
"location": "https://api.aphrodite.novacredit.com/user/sso/scim/Users/282ab371-3dd5-42f4-b8bb-3e32e075928e"
}
},
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "8353a76b-6e67-4c44-8518-cfd81fd9cfc4",
"externalId": null,
"userName": "employee3@novacredit.com",
"name": {
"formatted": "John Adams",
"familyName": "Adams",
"givenName": "John"
},
"emails": [
{
"value": "employee3@email.com",
"primary": true
}
],
"roles": [
{
"displayName": "Your Company Name, VIEWER"
}
],
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-03-13T19:47:23.158Z",
"lastModified": "2024-03-13T19:47:23.158Z",
"location": "https://api.aphrodite.novacredit.com/user/sso/scim/Users/8353a76b-6e67-4c44-8518-cfd81fd9cfc4"
}
},
]
}

POST /Users

Request:
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
],
"userName": "example@email.com",
"externalId": "externalId1",
"name": {
"familyName": "Madison",
"givenName": "James",
},
"roles": [
{
"displayName": "Child Org 1, ADMIN",
},
{
"displayName": "Child Org 2, DEVELOPER",
}
],
}

Response (201):
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "2b86b0a8-132f-4329-8efa-496b5001c374",
"externalId": "externalId1",
"userName": "example@email.com",
"name": {
"formatted": "James Madison",
"familyName": "Madison",
"givenName": "James"
},
"emails": [
{
"value": "example@email.com",
"primary": true
}
],
"roles": [
{
"displayName": "Child Org 1, ADMIN"
},
{
"displayName": "Child Org 2, DEVELOPER"
}
],
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-02-27T05:26:03.614Z",
"lastModified": "2024-02-27T05:26:03.614Z",
"location": "http://api.novacredit.com/user/sso/scim/Users/2b86b0a8-132f-4329-8efa-496b5001c374"
}
}

PATCH /Users/:id

Request:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{
"op": "Replace",
"path": "userName",
"value": "replacementemail@email.com"
}]
}

Response (200):
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "2b86b0a8-132f-4329-8efa-496b5001c374",
"externalId": "externalId1",
"userName": "example@email.com",
"name": {
"formatted": "James Madison",
"familyName": "Madison",
"givenName": "James"
},
"emails": [
{
"value": "replacementemail@email.com",
"primary": true
}
],
"roles": [
{
"displayName": "Child Org 1, ADMIN"
},
{
"displayName": "Child Org 2, DEVELOPER"
}
],
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-02-27T05:26:03.614Z",
"lastModified": "2024-02-27T05:26:03.614Z",
"location": "http://api.novacredit.com/user/sso/scim/Users/2b86b0a8-132f-4329-8efa-496b5001c374"
}
}

DELETE /Users/:id

The DELETE endpoint resolves with a 204 and does not return a response body.

Filters

The Nova Credit SCIM implementation supports filtering by all attributes for the GET /Users endpoint.

SCIM provisioning limitations

  • Users cannot be permanently deleted from Nova Credit, they can only be deactivated (soft deleted).
  • If Entra sends a hard delete to Nova any subsequent attempts to provision a new user with a duplicate email address will fail with a 409 error. If you need to reactivate a user, please contact support.
  • When creating a new user, if any fields are invalid, the provisioning will fail.
  • Group endpoints are not implemented, although groups can still be used for easier user management as long the iDP is configured to not push to these endpoints.