{"info":{"_postman_id":"6b1b176c-c9c8-471e-9c21-5b9286b69381","name":"ScrambleID API Documentation","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"9622840","collectionId":"6b1b176c-c9c8-471e-9c21-5b9286b69381","publishedId":"2s9YC4VtDe","public":true,"customColor":{"top-bar":"F1F3F2","right-sidebar":"F1F3F2","highlight":"FF6C37"},"publishDate":"2025-05-12T03:48:06.000Z"},"item":[{"name":"SCIM","item":[{"name":"Create User","id":"e7fb067e-92db-4c47-bec0-bc209027bd42","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"","description":"<h3 id=\"creating-a-user-required-and-optional-attributes\">Creating a User: Required and Optional Attributes</h3>\n<p>Create users with:</p>\n<p><code>POST /scim/v2/Users</code></p>\n<h4 id=\"required-attributes\">Required Attributes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>schemas</code></td>\n<td>array</td>\n<td>Must include <code>urn:ietf:params:scim:schemas:core:2.0:User</code>. Include the ScrambleID extension URN when sending ScrambleID-specific attributes.</td>\n</tr>\n<tr>\n<td><code>userName</code></td>\n<td>string</td>\n<td>Unique SCIM username for the user.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"recommended-attributes\">Recommended Attributes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>object</td>\n<td>User name details. Common fields are <code>givenName</code> and <code>familyName</code>.</td>\n</tr>\n<tr>\n<td><code>emails</code></td>\n<td>array</td>\n<td>Email addresses for the user. Include a primary work email when activation codes may be sent.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>SCIM account status. <code>false</code> pauses the user. Omitted or <code>true</code> keeps the user active.</td>\n</tr>\n<tr>\n<td><code>roles</code></td>\n<td>array</td>\n<td>Portal role assignments, using SCIM role objects such as <code>{ \"value\": \"USER\" }</code>.</td>\n</tr>\n<tr>\n<td>ScrambleID extension</td>\n<td>object</td>\n<td>Organization-specific extension for ScrambleID user flags.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"email-behavior\">Email Behavior</h4>\n<p>When <code>emails</code> is provided:</p>\n<ul>\n<li><p>Email values are normalized to lowercase.</p>\n</li>\n<li><p>If multiple emails are marked as primary, the last explicit primary email is used.</p>\n</li>\n<li><p>If no email is marked primary, ScrambleID falls back to the first <code>work</code> email.</p>\n</li>\n<li><p>If no <code>work</code> email exists, ScrambleID falls back to the first email in the array.</p>\n</li>\n<li><p>Activation emails require a resolved primary email.</p>\n</li>\n</ul>\n<h3 id=\"activation-code-handling-with-scrambleops\">Activation Code Handling with <code>scrambleOps</code></h3>\n<p><code>scrambleOps</code> is a request-only object used to trigger activation-code generation during create or replace operations. It is removed before the user is stored and is not returned in SCIM responses.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>scrambleOps.sendActivation</code></td>\n<td>boolean or string boolean</td>\n<td><code>false</code></td>\n<td>Sends a mobile activation code when mobile access is enabled.</td>\n</tr>\n<tr>\n<td><code>scrambleOps.sendDesktopActivation</code></td>\n<td>boolean or string boolean</td>\n<td><code>false</code></td>\n<td>Sends a desktop activation code when desktop access is enabled.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li><p>If <code>sendActivation</code> is <code>true</code>, ScrambleID generates and sends a mobile activation code, as long as mobile access is enabled for the user or organization.</p>\n</li>\n<li><p>If <code>sendDesktopActivation</code> is <code>true</code>, ScrambleID generates and sends a desktop activation code, as long as desktop access is enabled for the user or organization.</p>\n</li>\n<li><p>If <code>scrambleOps</code> is omitted, no activation code is generated or sent.</p>\n</li>\n<li><p>If the user has no primary email, activation is skipped.</p>\n</li>\n<li><p>Existing unused activation records may be reused instead of creating a new activation record.</p>\n</li>\n</ul>\n<h3 id=\"optional-attributes\">Optional Attributes</h3>\n<p>ScrambleID supports standard SCIM user attributes, the enterprise user extension, and organization-specific custom attributes.</p>\n<p>Common optional attributes include:</p>\n<ul>\n<li><p><code>externalId</code></p>\n</li>\n<li><p><code>displayName</code></p>\n</li>\n<li><p><code>nickName</code></p>\n</li>\n<li><p><code>title</code></p>\n</li>\n<li><p><code>preferredLanguage</code></p>\n</li>\n<li><p><code>locale</code></p>\n</li>\n<li><p><code>timezone</code></p>\n</li>\n<li><p><code>phoneNumbers</code></p>\n</li>\n<li><p><code>addresses</code></p>\n</li>\n<li><p><code>groups</code></p>\n</li>\n<li><p><code>roles</code></p>\n</li>\n<li><p>Enterprise extension attributes such as <code>employeeNumber</code>, <code>department</code>, and <code>manager</code></p>\n</li>\n<li><p>ScrambleID extension attributes under <code>scrambleAttributes</code></p>\n</li>\n</ul>\n<h3 id=\"create-user-example\">Create User Example</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": true\n    }\n  },\n  \"scrambleOps\": {\n    \"sendActivation\": true,\n    \"sendDesktopActivation\": true\n  }\n}\n\n</code></pre>\n<h3 id=\"create-user-success-response-example\">Create User Success Response Example</h3>\n<p>A successful create returns <code>201 Created</code> with a SCIM User resource.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\",\n    \"formatted\": \"John Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": true,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  },\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://api.example.com/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T14:30:00.000Z\"\n  }\n}\n\n</code></pre>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li><p>The response is a SCIM resource, not the ScrambleID business API envelope.</p>\n</li>\n<li><p><code>scrambleOps</code> is request-only and is not returned.</p>\n</li>\n<li><p><code>id</code> is the SCIM resource identifier used for <code>GET</code>, <code>PUT</code>, <code>PATCH</code>, and <code>DELETE</code> requests.</p>\n</li>\n<li><p><code>meta.location</code> contains the created user resource URL.</p>\n</li>\n</ul>\n<h3 id=\"create-user-error-example---user-already-exists\">Create User Error Example - User Already Exists</h3>\n<p>If a user already exists with the same <code>userName</code>, ScrambleID returns <code>409 Conflict</code> with a SCIM error response.</p>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">POST /scim/v2/Users HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/scim+json\nAccept: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\"\n  ],\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 409 Conflict\nContent-Type: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"409\",\n  \"detail\": \"User with userName 'john.doe' already exists.\",\n  \"scimType\": \"uniqueness\"\n}\n\n</code></pre>\n<h4 id=\"notes-1\">Notes</h4>\n<ul>\n<li><p>Duplicate checks are case-insensitive for <code>userName</code>.</p>\n</li>\n<li><p>In legacy SCIM mode, ScrambleID also checks primary email uniqueness.</p>\n</li>\n<li><p>The response is a SCIM error resource, not the ScrambleID business API envelope.</p>\n</li>\n</ul>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"febf3240-9d93-4c0c-89a7-65a6604d146a","name":"Create User - Create User","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Content-Type","value":"application/scim+json"},{"key":"Accept","value":"application/scim+json"}],"body":{"mode":"raw","raw":"{\n    \"schemas\": [\n      \"urn:ietf:params:scim:schemas:core:2.0:User\",\n      \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n    ],\n    \"userName\": \"john.doe\",\n    \"name\": {\n      \"givenName\": \"John\",\n      \"familyName\": \"Doe\"\n    },\n    \"emails\": [\n      {\n        \"value\": \"john.doe@example.com\",\n        \"type\": \"work\",\n        \"primary\": true\n      }\n    ],\n    \"active\": true,\n    \"roles\": [\n      {\n        \"value\": \"USER\"\n      }\n    ],\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n      \"scrambleAttributes\": {\n        \"desktopAppEnabled\": true,\n        \"mobileAppEnabled\": true,\n        \"managerEmail\": \"jane.doe@example.com\"\n      }\n    },\n    \"scrambleOps\": {\n      \"sendActivation\": true,\n      \"sendDesktopActivation\": true\n    }\n  }","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/scim/v2/Users"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\",\n    \"formatted\": \"John Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": true,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  },\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T14:30:00.000Z\"\n  }\n}\n"},{"id":"9d61cff7-9396-4067-98f3-2b9bc251762e","name":"Create User - User Exist","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Content-Type","value":"application/scim+json"},{"key":"Accept","value":"application/scim+json"}],"body":{"mode":"raw","raw":"{\n    \"schemas\": [\n      \"urn:ietf:params:scim:schemas:core:2.0:User\"\n    ],\n    \"userName\": \"john.doe\",\n    \"name\": {\n      \"givenName\": \"John\",\n      \"familyName\": \"Doe\"\n    },\n    \"emails\": [\n      {\n        \"value\": \"john.doe@example.com\",\n        \"type\": \"work\",\n        \"primary\": true\n      }\n    ],\n    \"active\": true\n  }","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/scim/v2/Users"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"409\",\n  \"detail\": \"User with userName 'john.doe' already exists.\",\n  \"scimType\": \"uniqueness\"\n}\n"}],"_postman_id":"e7fb067e-92db-4c47-bec0-bc209027bd42"},{"name":"Update User","id":"56ec3bfe-eab0-450d-8e2d-ba54400146ba","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":""},"url":"","description":"<h3 id=\"updating-a-user-with-put-full-user-profile-replacement\">Updating a User with PUT: Full User Profile Replacement</h3>\n<p>Use <code>PUT</code> when replacing an existing SCIM user resource.</p>\n<p><code>PUT /scim/v2/Users/{id}</code></p>\n<h4 id=\"purpose\">Purpose</h4>\n<p><code>PUT</code> replaces the user’s SCIM profile with the attributes provided in the request body.</p>\n<p>Use this endpoint when the caller has the full desired user state. For partial updates, use <code>PATCH</code>.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Yes</td>\n<td>The SCIM resource ID returned by ScrambleID in the user’s <code>id</code> field. In standard SCIM mode, this may be different from <code>userName</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"required-attributes\">Required Attributes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>schemas</code></td>\n<td>array</td>\n<td>Must include <code>urn:ietf:params:scim:schemas:core:2.0:User</code>. Include extension URNs when sending extension attributes.</td>\n</tr>\n<tr>\n<td><code>userName</code></td>\n<td>string</td>\n<td>The user’s SCIM username. Must be non-empty.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"recommended-attributes\">Recommended Attributes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>object</td>\n<td>User name details. Common fields are <code>givenName</code> and <code>familyName</code>.</td>\n</tr>\n<tr>\n<td><code>emails</code></td>\n<td>array</td>\n<td>Email addresses for the user. Include a primary work email when activation codes may be sent.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>SCIM account status. <code>false</code> pauses the user. If omitted, the existing active/paused status is preserved.</td>\n</tr>\n<tr>\n<td><code>roles</code></td>\n<td>array</td>\n<td>Portal role assignments, using SCIM role objects such as <code>{ \"value\": \"USER\" }</code>.</td>\n</tr>\n<tr>\n<td>ScrambleID extension</td>\n<td>object</td>\n<td>Organization-specific extension for ScrambleID user flags.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li><p><code>PUT</code> replaces the mutable SCIM profile fields with the values in the request body.</p>\n</li>\n<li><p>Mutable attributes omitted from the request may be removed from the existing profile.</p>\n</li>\n<li><p>Server-managed fields such as <code>id</code>, <code>meta</code>, <code>created</code>, <code>lastModified</code>, registration state, and device state are preserved or regenerated by ScrambleID.</p>\n</li>\n<li><p><code>scrambleOps</code> is request-only. It can trigger activation-code generation but is not stored or returned.</p>\n</li>\n<li><p>If <code>active</code> is omitted, ScrambleID preserves the user’s existing active/paused status.</p>\n</li>\n<li><p>If <code>active</code> is <code>false</code>, the user is paused.</p>\n</li>\n<li><p>If <code>active</code> is <code>true</code>, the user is unpaused.</p>\n</li>\n<li><p>The <code>{orgCode}</code> in the ScrambleID extension URN must match the organization associated with the access token.</p>\n</li>\n</ul>\n<h4 id=\"common-error-cases\">Common Error Cases</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>SCIM type</strong></th>\n<th><strong>When it happens</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td><code>invalidValue</code></td>\n<td>A required attribute such as <code>userName</code> is empty or invalid.</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td><code>mutability</code></td>\n<td>A protected field such as <code>id</code>, <code>recordType</code>, or <code>suid</code> is changed.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>None</td>\n<td>No user exists for the <code>{id}</code> in the request URL.</td>\n</tr>\n<tr>\n<td><code>409</code></td>\n<td><code>uniqueness</code></td>\n<td>The replacement attempts to use a <code>userName</code> that already belongs to another user.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"put-update-user-success-example\">PUT Update User Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">PUT /scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91 HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/scim+json\nAccept: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": false,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  }\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\",\n    \"formatted\": \"John Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": false,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  },\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T15:10:00.000Z\"\n  }\n}\n\n</code></pre>\n<h3 id=\"put-update-user-error-example---user-not-found\">PUT Update User Error Example - User Not Found</h3>\n<p>If no user exists for the <code>{id}</code> in the URL, ScrambleID returns <code>404 Not Found</code>.</p>\n<h4 id=\"request-1\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">PUT /scim/v2/Users/missing-user-id HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/scim+json\nAccept: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\"\n  ],\n  \"userName\": \"john.doe\",\n  \"active\": true\n}\n\n</code></pre>\n<h4 id=\"response-1\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 404 Not Found\nContent-Type: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"404\",\n  \"detail\": \"User with id 'missing-user-id' not found.\"\n}\n\n</code></pre>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"30065890-c5b3-4485-a734-c5e1191b551c","id":"30065890-c5b3-4485-a734-c5e1191b551c","name":"SCIM","type":"folder"}},"urlObject":{"query":[],"variable":[]}},"response":[{"id":"00bfa569-d741-4247-ad91-d125234c3f7c","name":"Update User","originalRequest":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Content-Type","value":"application/scim+json"},{"key":"Accept","value":"application/scim+json"}],"body":{"mode":"raw","raw":"{\n    \"schemas\": [\n      \"urn:ietf:params:scim:schemas:core:2.0:User\",\n      \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n    ],\n    \"userName\": \"john.doe\",\n    \"name\": {\n      \"givenName\": \"John\",\n      \"familyName\": \"Doe\"\n    },\n    \"emails\": [\n      {\n        \"value\": \"john.doe@example.com\",\n        \"type\": \"work\",\n        \"primary\": true\n      }\n    ],\n    \"active\": true,\n    \"roles\": [\n      {\n        \"value\": \"USER\"\n      }\n    ],\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n      \"scrambleAttributes\": {\n        \"desktopAppEnabled\": true,\n        \"mobileAppEnabled\": false,\n        \"managerEmail\": \"jane.doe@example.com\"\n      }\n    }\n  }","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 16 Oct 2023 06:23:54 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"480"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"39b60f67-b6a3-41a4-bd97-549302295dde"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"M4aHJGxWIAMF8OQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-652cd6fa-2abf396a14c6105010b283db;Sampled=0;lineage=cb3499f9:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\",\n    \"formatted\": \"John Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": false,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  },\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T15:10:00.000Z\"\n  }\n}\n"}],"_postman_id":"56ec3bfe-eab0-450d-8e2d-ba54400146ba"},{"name":"Get User","id":"ca70d116-309c-4807-a02a-8b931760eee7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"","description":"<h3 id=\"retrieving-a-user-profile-with-get\">Retrieving a User Profile with GET</h3>\n<p>Use <code>GET</code> to retrieve a single SCIM user resource.</p>\n<p><code>GET /scim/v2/Users/{id}</code></p>\n<p>This is a read-only operation and does not modify user data.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Yes</td>\n<td>The SCIM resource ID returned by ScrambleID in the user’s <code>id</code> field.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"query-parameters\">Query Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>includeDevices</code></td>\n<td>No</td>\n<td>Set to <code>true</code> to include device details in <code>scrambleMeta.devices</code> when available.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"required-scope\">Required Scope</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Method</strong></th>\n<th><strong>Required scope</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>GET</td>\n<td><code>scim.read</code></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li>Returns a SCIM User resource when the user exists.</li>\n<li>Returns <code>404 Not Found</code> when no user exists for the requested <code>{id}</code>.</li>\n<li>The response is a SCIM resource, not the ScrambleID business API envelope.</li>\n<li>In standard SCIM mode, the <code>{id}</code> lookup is exact.</li>\n<li>In legacy SCIM mode, username-based lookup is case-insensitive.</li>\n</ul>\n<h3 id=\"get-user-success-example\">GET User Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">GET /scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91?includeDevices=true HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/scim+json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\",\n    \"formatted\": \"John Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": true,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  },\n  \"scrambleMeta\": {\n    \"registered\": true,\n    \"registeredAt\": 1777991400000,\n    \"lastLogin\": 1777995000000,\n    \"devices\": [\n      {\n        \"name\": \"John's iPhone\",\n        \"registeredDate\": 1777991400000,\n        \"zid\": \"zid_01HXAMPLE\",\n        \"status\": \"active\",\n        \"lastLogin\": 1777995000000,\n        \"active\": true,\n        \"type\": \"mobile\"\n      }\n    ]\n  },\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T15:10:00.000Z\"\n  }\n}\n</code></pre>\n<h3 id=\"get-user-error-example---user-not-found\">GET User Error Example - User Not Found</h3>\n<h4 id=\"request-1\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">GET /scim/v2/Users/missing-user-id HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n</code></pre>\n<h4 id=\"response-1\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 404 Not Found\nContent-Type: application/scim+json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"404\",\n  \"detail\": \"User with id 'missing-user-id' not found.\"\n}\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"2ef3f372-2965-462a-8821-b19f5f4d7d4d","name":"Get User","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Accept","value":"application/scim+json"}],"url":{"raw":"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91?includeDevices=true","protocol":"https","host":["{env}","scrambleid","com"],"path":["api","v1","scim","v2","Users","7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91"],"query":[{"key":"includeDevices","value":"true"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 16 Oct 2023 07:25:15 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"480"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"9a426d19-0be3-485d-aaf3-45bfec54d73c"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"M4jGLHCgoAMFbKQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-652ce55a-209463cd039a75326869cbe3;Sampled=0;lineage=cb3499f9:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"active\": true,\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T15:10:00.000Z\"\n  }\n}\n"}],"_postman_id":"ca70d116-309c-4807-a02a-8b931760eee7"},{"name":"Get List of Users","id":"d16e7022-1304-4be8-90c2-4d16b7afdf9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"","description":"<h3 id=\"retrieving-a-list-of-users-with-get\">Retrieving a List of Users with GET</h3>\n<p>Use <code>GET</code> to retrieve a paginated list of SCIM user resources.</p>\n<p><code>GET /scim/v2/Users</code></p>\n<p>This is a read-only operation and does not modify user data.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td>No</td>\n<td>Maximum number of users to return. Defaults to <code>10</code> when omitted.</td>\n</tr>\n<tr>\n<td><code>lastItem</code></td>\n<td>No</td>\n<td>Cursor returned from a previous response as <code>lastEvaluatedKey</code>. Use this to request the next page.</td>\n</tr>\n<tr>\n<td><code>filter</code></td>\n<td>No</td>\n<td>Standard mode supports <code>userName eq \"value\"</code> and <code>userName sw \"value\"</code>.</td>\n</tr>\n<tr>\n<td><code>startIndex</code></td>\n<td>No</td>\n<td>Accepted for SCIM compatibility, but cursor pagination uses <code>lastItem</code>. Responses always return <code>startIndex: 1</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"required-scope\">Required Scope</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Method</strong></th>\n<th><strong>Required scope</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>GET</td>\n<td><code>scim.read</code></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li><p>Returns a SCIM <code>ListResponse</code>.</p>\n</li>\n<li><p>Results are paginated. A response may include <code>lastEvaluatedKey</code>; pass that value as <code>lastItem</code> to retrieve the next page.</p>\n</li>\n<li><p><code>totalResults</code> is the total result count reported by the backing query.</p>\n</li>\n<li><p><code>itemsPerPage</code> is the requested <code>count</code>, or <code>10</code> when <code>count</code> is omitted.</p>\n</li>\n<li><p><code>Resources</code> contains the returned SCIM User resources.</p>\n</li>\n<li><p>The response is a SCIM response, not the ScrambleID business API envelope.</p>\n</li>\n</ul>\n<h4 id=\"filter-operators\">Filter Operators</h4>\n<p>In standard SCIM mode, filtering is supported only on <code>userName</code> with:</p>\n<ul>\n<li><p><code>eq</code></p>\n</li>\n<li><p><code>sw</code></p>\n</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Operator</strong></th>\n<th><strong>Meaning</strong></th>\n<th><strong>Example</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>eq</code></td>\n<td>Equals. Returns users whose <code>userName</code> exactly matches the provided value.</td>\n<td><code>userName eq \"john.doe\"</code></td>\n</tr>\n<tr>\n<td><code>sw</code></td>\n<td>Starts with. Returns users whose <code>userName</code> begins with the provided value.</td>\n<td><code>userName sw \"john\"</code></td>\n</tr>\n</tbody>\n</table>\n</div><p>Examples:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-text\">filter=userName eq \"john.doe\"\nfilter=userName sw \"john\"\n\n</code></pre>\n<p>Unsupported filters return <code>400 Bad Request</code> with <code>scimType: invalidFilter</code>.</p>\n<h3 id=\"list-users-success-example\">List Users Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">GET /scim/v2/Users?count=2&amp;filter=userName sw \"jo\" HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:ListResponse\"\n  ],\n  \"totalResults\": 7,\n  \"itemsPerPage\": 2,\n  \"startIndex\": 1,\n  \"Resources\": [\n    {\n      \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n      ],\n      \"id\": \"john.doe\",\n      \"userName\": \"john.doe\",\n      \"name\": {\n        \"givenName\": \"John\",\n        \"familyName\": \"Doe\",\n        \"formatted\": \"John Doe\"\n      },\n      \"emails\": [\n        {\n          \"value\": \"john.doe@example.com\",\n          \"type\": \"work\",\n          \"primary\": true\n        }\n      ],\n      \"active\": true,\n      \"meta\": {\n        \"resourceType\": \"User\",\n        \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/john.doe\",\n        \"created\": \"2026-05-05T14:30:00.000Z\",\n        \"lastModified\": \"2026-05-05T15:10:00.000Z\"\n      }\n    },\n    {\n      \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n      ],\n      \"id\": \"jordan.smith\",\n      \"userName\": \"jordan.smith\",\n      \"name\": {\n        \"givenName\": \"Jordan\",\n        \"familyName\": \"Smith\",\n        \"formatted\": \"Jordan Smith\"\n      },\n      \"emails\": [\n        {\n          \"value\": \"jordan.smith@example.com\",\n          \"type\": \"work\",\n          \"primary\": true\n        }\n      ],\n      \"active\": true,\n      \"meta\": {\n        \"resourceType\": \"User\",\n        \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/jordan.smith\",\n        \"created\": \"2026-05-05T14:35:00.000Z\",\n        \"lastModified\": \"2026-05-05T15:15:00.000Z\"\n      }\n    }\n  ],\n  \"lastEvaluatedKey\": \"eyJwcmltYXJ5QXR0ciI6ImpvcmRhbi5zbWl0aCJ9\"\n}\n\n</code></pre>\n<h3 id=\"list-users-next-page-example\">List Users Next Page Example</h3>\n<p>Use the previous response’s <code>lastEvaluatedKey</code> as <code>lastItem</code>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">GET /scim/v2/Users?count=2&amp;lastItem=eyJwcmltYXJ5QXR0ciI6ImpvcmRhbi5zbWl0aCJ9 HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n\n</code></pre>\n<h3 id=\"list-users-error-example---unsupported-filter\">List Users Error Example - Unsupported Filter</h3>\n<h4 id=\"request-1\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">GET /scim/v2/Users?filter=displayName sw \"John\" HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n\n</code></pre>\n<h4 id=\"response-1\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 400 Bad Request\nContent-Type: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"400\",\n  \"detail\": \"Filtering is only supported on userName with eq or sw.\",\n  \"scimType\": \"invalidFilter\"\n}\n\n</code></pre>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"30065890-c5b3-4485-a734-c5e1191b551c","id":"30065890-c5b3-4485-a734-c5e1191b551c","name":"SCIM","type":"folder"}},"urlObject":{"query":[],"variable":[]}},"response":[{"id":"7e4a8e30-14a6-4026-82b5-a987f7dec96b","name":"Get List of Users","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Accept","value":"application/scim+json"}],"url":{"raw":"https://{env}.scrambleid.com/api/v1/scim/v2/Users?count=2&filter=userName%20sw%20%22jo%22","protocol":"https","host":["{env}","scrambleid","com"],"path":["api","v1","scim","v2","Users"],"query":[{"key":"count","value":"2"},{"key":"filter","value":"userName%20sw%20%22jo%22"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 16 Oct 2023 07:42:04 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"610"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"e6bb5ef5-32e2-423e-97a3-16c72acdbd8b"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"M4lj8H8AoAMFppQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-652ce94c-70de01a905a3c71779564789;Sampled=0;lineage=cb3499f9:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:ListResponse\"\n  ],\n  \"totalResults\": 7,\n  \"itemsPerPage\": 2,\n  \"startIndex\": 1,\n  \"Resources\": [\n    {\n      \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n      ],\n      \"id\": \"john.doe\",\n      \"userName\": \"john.doe\",\n      \"active\": true,\n      \"emails\": [\n        {\n          \"value\": \"john.doe@example.com\",\n          \"type\": \"work\",\n          \"primary\": true\n        }\n      ],\n      \"meta\": {\n        \"resourceType\": \"User\",\n        \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/john.doe\",\n        \"created\": \"2026-05-05T14:30:00.000Z\",\n        \"lastModified\": \"2026-05-05T15:10:00.000Z\"\n      }\n    },\n    {\n      \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n      ],\n      \"id\": \"jordan.smith\",\n      \"userName\": \"jordan.smith\",\n      \"active\": true,\n      \"emails\": [\n        {\n          \"value\": \"jordan.smith@example.com\",\n          \"type\": \"work\",\n          \"primary\": true\n        }\n      ],\n      \"meta\": {\n        \"resourceType\": \"User\",\n        \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/jordan.smith\",\n        \"created\": \"2026-05-05T14:35:00.000Z\",\n        \"lastModified\": \"2026-05-05T15:15:00.000Z\"\n      }\n    }\n  ],\n  \"lastEvaluatedKey\": \"eyJwcmltYXJ5QXR0ciI6ImpvcmRhbi5zbWl0aCJ9\"\n}\n"}],"_postman_id":"d16e7022-1304-4be8-90c2-4d16b7afdf9e"},{"name":"Delete User","id":"92e99043-b6a7-4d74-8dbd-d60c382ca1f5","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"auth":{"type":"noauth","isInherited":false},"method":"DELETE","header":[],"url":"","description":"<h3 id=\"deleting-a-user-with-delete\">Deleting a User with DELETE</h3>\n<p>Use <code>DELETE</code> to remove a SCIM user resource.</p>\n<p><code>DELETE /scim/v2/Users/{id}</code></p>\n<p>This operation cannot be undone.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Yes</td>\n<td>The SCIM resource ID returned by ScrambleID in the user’s <code>id</code> field.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"required-scope\">Required Scope</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Method</strong></th>\n<th><strong>Required scope</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>DELETE</td>\n<td><code>scim.delete</code></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li><p>Deletes the organization user profile for the requested <code>{id}</code>.</p>\n</li>\n<li><p>If the user is registered to ScrambleID, deletion also unenrolls the user from the organization.</p>\n</li>\n<li><p>If the user is not registered, ScrambleID directly removes the SCIM org-user record.</p>\n</li>\n<li><p>Any pending activation records for the user may also be removed.</p>\n</li>\n<li><p>A successful delete returns <code>204 No Content</code>.</p>\n</li>\n<li><p>The response body is empty on success.</p>\n</li>\n</ul>\n<h3 id=\"delete-user-success-example\">DELETE User Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">DELETE /scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91 HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 204 No Content\n\n</code></pre>\n<h3 id=\"delete-user-error-example---user-not-found\">DELETE User Error Example - User Not Found</h3>\n<p>If no user exists for the <code>{id}</code> in the URL, ScrambleID returns <code>404 Not Found</code>.</p>\n<h4 id=\"request-1\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">DELETE /scim/v2/Users/missing-user-id HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/scim+json\n\n</code></pre>\n<h4 id=\"response-1\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 404 Not Found\nContent-Type: application/scim+json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"404\",\n  \"detail\": \"User with id 'missing-user-id' not found.\"\n}\n\n</code></pre>\n<h3 id=\"delete-user-error-example---transaction-failed\">DELETE User Error Example - Transaction Failed</h3>\n<p>If ScrambleID cannot complete the delete transaction, the API returns <code>500 Internal Server Error</code>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"500\",\n  \"detail\": \"Transaction failed during SCIM user deletion\"\n}\n\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"b274edac-6e9a-47d5-b2fc-3e1f743ccd64","name":"Delete User","originalRequest":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Accept","value":"application/scim+json"}],"url":"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 11 Oct 2023 15:45:18 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"0"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"ad580103-313b-4718-a270-c580d6ef5d9c"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"MpNqTGsCIAMFibA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-6526c30e-3d7402817a67fa8f7a9fc1ea;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"92e99043-b6a7-4d74-8dbd-d60c382ca1f5"},{"name":"Patch User","id":"c29eba1a-ab5b-47c7-98e5-8c5615c710dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":""},"url":"","description":"<h3 id=\"updating-a-user-with-patch\">Updating a User with PATCH</h3>\n<p>Use <code>PATCH</code> to add, remove, or replace specific attributes on an existing SCIM user resource without replacing the full user profile.</p>\n<p><code>PATCH /scim/v2/Users/{id}</code></p>\n<p>Use this endpoint when the caller only needs to update selected fields. For full profile replacement, use <code>PUT</code>.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Yes</td>\n<td>The SCIM resource ID returned by ScrambleID in the user’s <code>id</code> field.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"required-scope\">Required Scope</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Method</strong></th>\n<th><strong>Required scope</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>PATCH</td>\n<td><code>scim.write</code></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"required-request-body\">Required Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>schemas</code></td>\n<td>array</td>\n<td>Must include <code>urn:ietf:params:scim:api:messages:2.0:PatchOp</code>.</td>\n</tr>\n<tr>\n<td><code>Operations</code></td>\n<td>array</td>\n<td>One or more SCIM patch operations.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"supported-operations\">Supported Operations</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Operation</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>add</code></td>\n<td>Adds a value to an attribute. For multi-valued attributes, adds to the existing array.</td>\n</tr>\n<tr>\n<td><code>replace</code></td>\n<td>Replaces an attribute value or a matching filtered value.</td>\n</tr>\n<tr>\n<td><code>remove</code></td>\n<td>Removes an attribute or a matching filtered value.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li>PATCH updates only the attributes specified in <code>Operations</code>.</li>\n<li>Server-managed fields such as <code>id</code>, <code>meta</code>, <code>created</code>, <code>lastModified</code>, registration state, and device state are preserved or regenerated by ScrambleID.</li>\n<li><code>active: false</code> pauses the user.</li>\n<li><code>active: true</code> unpauses the user.</li>\n<li>If <code>active</code> is not patched, the existing active/paused status is preserved.</li>\n<li>Email values are normalized to lowercase.</li>\n<li>When an email is promoted to primary, other emails are demoted.</li>\n<li>The response is the updated SCIM User resource.</li>\n</ul>\n<h4 id=\"path-examples\">Path Examples</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-text\">displayName\nname.givenName\nactive\nemails\nemails[type eq \"work\"].value\nphoneNumbers[type eq \"mobile\"].value\nurn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager.displayName\n</code></pre>\n<h3 id=\"patch-user-success-example\">PATCH User Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">PATCH /scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91 HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/scim+json\nAccept: application/scim+json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n  ],\n  \"Operations\": [\n    {\n      \"op\": \"replace\",\n      \"path\": \"name.givenName\",\n      \"value\": \"Jonathan\"\n    },\n    {\n      \"op\": \"replace\",\n      \"path\": \"displayName\",\n      \"value\": \"Jonathan Doe\"\n    },\n    {\n      \"op\": \"replace\",\n      \"path\": \"emails[type eq \\\"work\\\"].value\",\n      \"value\": \"jonathan.doe@example.com\"\n    },\n    {\n      \"op\": \"replace\",\n      \"path\": \"active\",\n      \"value\": true\n    }\n  ]\n}\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/scim+json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\"\n  ],\n  \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"Jonathan\",\n    \"familyName\": \"Doe\",\n    \"formatted\": \"Jonathan Doe\"\n  },\n  \"displayName\": \"Jonathan Doe\",\n  \"emails\": [\n    {\n      \"value\": \"jonathan.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"meta\": {\n    \"resourceType\": \"User\",\n    \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"created\": \"2026-05-05T14:30:00.000Z\",\n    \"lastModified\": \"2026-05-05T15:25:00.000Z\"\n  }\n}\n</code></pre>\n<h3 id=\"patch-user-error-example---user-not-found\">PATCH User Error Example - User Not Found</h3>\n<h4 id=\"request-1\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">PATCH /scim/v2/Users/missing-user-id HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/scim+json\nAccept: application/scim+json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n  ],\n  \"Operations\": [\n    {\n      \"op\": \"replace\",\n      \"path\": \"displayName\",\n      \"value\": \"Jonathan Doe\"\n    }\n  ]\n}\n</code></pre>\n<h4 id=\"response-1\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 404 Not Found\nContent-Type: application/scim+json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"404\",\n  \"detail\": \"User with id 'missing-user-id' not found.\"\n}\n</code></pre>\n<h3 id=\"patch-user-error-example---missing-patchop-schema\">PATCH User Error Example - Missing PatchOp Schema</h3>\n<p>Standard SCIM PATCH requests must include the PatchOp schema.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"400\",\n  \"detail\": \"Request must include schema 'urn:ietf:params:scim:api:messages:2.0:PatchOp'.\"\n}\n</code></pre>\n<h3 id=\"patch-user-error-example---no-matching-filter-target\">PATCH User Error Example - No Matching Filter Target</h3>\n<p>If a filtered path does not match an existing value, ScrambleID returns <code>400 Bad Request</code>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:Error\"\n  ],\n  \"status\": \"400\",\n  \"detail\": \"No matching emails found for filter\",\n  \"scimType\": \"noTarget\"\n}\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"d3c193fa-4b5a-40fa-b06d-a397dd37ee3d","name":"Patch User","originalRequest":{"method":"PATCH","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Content-Type","value":"application/scim+json"},{"key":"Accept","value":"application/scim+json"}],"body":{"mode":"raw","raw":"{\n    \"schemas\": [\n      \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n    ],\n    \"Operations\": [\n      {\n        \"op\": \"replace\",\n        \"path\": \"name.givenName\",\n        \"value\": \"John\"\n      },\n      {\n        \"op\": \"replace\",\n        \"path\": \"displayName\",\n        \"value\": \"John Doe\"\n      },\n      {\n        \"op\": \"replace\",\n        \"path\": \"emails[type eq \\\"work\\\"].value\",\n        \"value\": \"john.doe@example.com\"\n      },\n      {\n        \"op\": \"replace\",\n        \"path\": \"active\",\n        \"value\": true\n      }\n    ]\n  }","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n    ],\n    \"id\": \"7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n    \"userName\": \"john.doe\",\n    \"name\": {\n        \"givenName\": \"John\",\n        \"familyName\": \"Doe\",\n        \"formatted\": \"John Doe\"\n    },\n    \"displayName\": \"John Doe\",\n    \"emails\": [\n        {\n            \"value\": \"john.doe@example.com\",\n            \"type\": \"work\",\n            \"primary\": true\n        }\n    ],\n    \"active\": true,\n    \"meta\": {\n        \"resourceType\": \"User\",\n        \"location\": \"https://{env}.scrambleid.com/api/v1/scim/v2/Users/7f4b7c8e-8b8e-4f5d-9b4f-2f2d7c7f3a91\",\n        \"created\": \"2026-05-05T14:30:00.000Z\",\n        \"lastModified\": \"2026-05-05T15:25:00.000Z\"\n    }\n}"}],"_postman_id":"c29eba1a-ab5b-47c7-98e5-8c5615c710dc"}],"id":"30065890-c5b3-4485-a734-c5e1191b551c","description":"<h2 id=\"user-provisioning-scim\"><strong>User Provisioning (SCIM)</strong></h2>\n<p>ScrambleID supports SCIM 2.0 user provisioning at:</p>\n<p><code>/scim/v2/Users</code></p>\n<p>SCIM endpoints return SCIM protocol responses, not the ScrambleID business API response envelope.</p>\n<h3 id=\"scim-request-headers\">SCIM Request Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Authorization</code></td>\n<td>Yes</td>\n<td>Bearer access token with the scope required for the HTTP method. Format: <code>Bearer &lt;access_token&gt;</code>.</td>\n</tr>\n<tr>\n<td><code>Content-Type</code></td>\n<td>Required for requests with a body</td>\n<td>Use <code>application/scim+json</code>.</td>\n</tr>\n<tr>\n<td><code>Accept</code></td>\n<td>Recommended</td>\n<td>Use <code>application/scim+json</code>.</td>\n</tr>\n<tr>\n<td><code>x-client-request-id</code></td>\n<td>Optional</td>\n<td>Client-generated correlation ID. Echoed back in response headers when provided.</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><code>x-org</code> is not required for SCIM provisioning. The organization is resolved from the authenticated access token. The <code>{orgCode}</code> value in the ScrambleID SCIM extension URN must match the organization associated with the token.</p>\n</blockquote>\n<p>Required OAuth scopes are derived from the HTTP method:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Method</strong></th>\n<th><strong>Required scope</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>GET</td>\n<td><code>scim.read</code></td>\n</tr>\n<tr>\n<td>POST</td>\n<td><code>scim.write</code></td>\n</tr>\n<tr>\n<td>PUT</td>\n<td><code>scim.write</code></td>\n</tr>\n<tr>\n<td>PATCH</td>\n<td><code>scim.write</code></td>\n</tr>\n<tr>\n<td>DELETE</td>\n<td><code>scim.delete</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"user-roles\">User Roles</h3>\n<p>Portal roles are provisioned through the SCIM <code>roles</code> attribute. Role values must match the configured portal role codes for the organization.</p>\n<p>Default role codes include:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Role</strong></th>\n<th><strong>Capabilities</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>SUPER_ADMIN</code></td>\n<td>Full portal administration, including organization settings, user management, app configuration, SCIM credential management, device management, and login history.</td>\n</tr>\n<tr>\n<td><code>HELPDESK_ADMIN</code></td>\n<td>User support workflows such as user search, activation code generation, device support, verbal authentication, and login history access.</td>\n</tr>\n<tr>\n<td><code>SECURITY_ADMIN</code></td>\n<td>Security and organization configuration workflows, including SAML/OIDC configuration, device policy, session management, and custom role management.</td>\n</tr>\n<tr>\n<td><code>CALL_CENTER_ADMIN</code></td>\n<td>Limited support workflows, including user lookup, activation code generation, device actions, and login history access.</td>\n</tr>\n<tr>\n<td><code>USER</code></td>\n<td>Self-service access for managing their own devices, testing devices, and viewing their own login history.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"notes\">Notes</h4>\n<ul>\n<li>Role permissions apply to the portal application.</li>\n<li>Organizations may customize role permissions. Treat the role code as the stable assignment value, not the display name.</li>\n<li>If no valid role is resolved, the user receives the default user permissions.</li>\n</ul>\n<h3 id=\"scrambleid-scim-extension-attributes\">ScrambleID SCIM Extension Attributes</h3>\n<p>ScrambleID-specific user flags are sent in the organization-specific SCIM extension:</p>\n<p><code>urn:ietf:params:scim:schemas:extension:scrambleid:{orgCode}:2.0:User</code></p>\n<p>Inside that extension, use the <code>scrambleAttributes</code> object.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Default behavior</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>desktopAppEnabled</code></td>\n<td>boolean</td>\n<td>Falls back to org/app settings; if no setting exists, desktop access is disabled.</td>\n<td>Enables desktop activation and desktop app authentication for the user. If <code>false</code>, desktop activation and desktop authentication are blocked.</td>\n</tr>\n<tr>\n<td><code>mobileAppEnabled</code></td>\n<td>boolean</td>\n<td>Enabled unless explicitly set to <code>false</code> at user or org level.</td>\n<td>Enables mobile activation and mobile app authentication for the user. If <code>false</code>, mobile activation and mobile authentication are blocked.</td>\n</tr>\n<tr>\n<td><code>isManager</code></td>\n<td>boolean</td>\n<td><code>false</code> if omitted.</td>\n<td>Grants manager-level portal behavior for direct reports.</td>\n</tr>\n<tr>\n<td><code>managerEmail</code></td>\n<td>string</td>\n<td>None.</td>\n<td>Identifies the user’s manager by email for direct report management.</td>\n</tr>\n<tr>\n<td><code>userType</code></td>\n<td>string</td>\n<td><code>user</code> if omitted.</td>\n<td>Optional user classification. Common values include <code>user</code> and <code>bot</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"important-validation-notes\">Important Validation Notes</h4>\n<ul>\n<li><code>desktopAppEnabled</code> and <code>mobileAppEnabled</code> must be JSON booleans: <code>true</code> or <code>false</code>.</li>\n<li>String or numeric values such as <code>\"true\"</code>, <code>\"false\"</code>, <code>1</code>, or <code>0</code> are ignored for app enablement flags.</li>\n<li><code>isManager</code>, <code>managerEmail</code>, and <code>userType</code> are returned inside <code>scrambleAttributes</code> in SCIM responses, but are stored as first-class portal user metadata internally.</li>\n<li>For manager delegation, set <code>isManager: true</code> on the manager and set <code>managerEmail</code> on each direct report.</li>\n</ul>\n<h3 id=\"usage-example---manager-and-app-flags\">Usage Example - Manager and App Flags</h3>\n<p>If Jane Doe manages John Doe:</p>\n<ul>\n<li>Set Jane’s <code>isManager</code> to <code>true</code>.</li>\n<li>Set John’s <code>managerEmail</code> to Jane’s email address.</li>\n<li>Optionally set John’s app access flags.</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\"\n  ],\n  \"userName\": \"john.doe\",\n  \"name\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\"\n  },\n  \"emails\": [\n    {\n      \"value\": \"john.doe@example.com\",\n      \"type\": \"work\",\n      \"primary\": true\n    }\n  ],\n  \"active\": true,\n  \"roles\": [\n    {\n      \"value\": \"USER\"\n    }\n  ],\n  \"urn:ietf:params:scim:schemas:extension:scrambleid:acme:2.0:User\": {\n    \"scrambleAttributes\": {\n      \"desktopAppEnabled\": true,\n      \"mobileAppEnabled\": true,\n      \"managerEmail\": \"jane.doe@example.com\"\n    }\n  }\n}\n</code></pre>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"bf45d46d-d3b8-491d-9280-03fdda35d611","type":"text/javascript","requests":{},"exec":[""]}},{"listen":"test","script":{"id":"60f2c224-52a4-49a5-b292-deb55228dfb1","type":"text/javascript","requests":{},"exec":[""]}}],"_postman_id":"30065890-c5b3-4485-a734-c5e1191b551c"},{"name":"Audit","item":[{"name":"Audit Log","id":"519232f4-2564-424f-a36f-5baec7f35238","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"","description":"<h2 id=\"audit-apis\">Audit APIs</h2>\n<p>ScrambleID Audit APIs provide read-only access to organization authentication activity for compliance review, security monitoring, and operational reporting.</p>\n<h3 id=\"retrieving-authentication-audit-metrics\">Retrieving Authentication Audit Metrics</h3>\n<p>Use <code>GET</code> to retrieve authentication activity metrics for an organization.</p>\n<p><code>GET /analytics/metrics/auth</code></p>\n<p>This endpoint returns aggregated authentication metrics for the organization associated with the authenticated token.</p>\n<h4 id=\"required-access\">Required Access</h4>\n<p>The caller must be authenticated and must have the <code>SUPER_ADMIN</code> role.</p>\n<h4 id=\"request-headers\">Request Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Authorization</code></td>\n<td>Yes</td>\n<td>Bearer access token. Format: <code>Bearer &lt;access_token&gt;</code>.</td>\n</tr>\n<tr>\n<td><code>Accept</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"query-parameters\">Query Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>appid</code></td>\n<td>No</td>\n<td><code>ALL</code></td>\n<td>Filters metrics to a specific application ID. Use <code>ALL</code> for all applications.</td>\n</tr>\n<tr>\n<td><code>startTime</code></td>\n<td>No</td>\n<td>Last 3 hours</td>\n<td>Start of the reporting window. Accepts ISO 8601 datetime or Unix timestamp. Cannot be older than 90 days.</td>\n</tr>\n<tr>\n<td><code>endTime</code></td>\n<td>No</td>\n<td>Current time</td>\n<td>End of the reporting window. Accepts ISO 8601 datetime or Unix timestamp. Must be greater than or equal to <code>startTime</code>.</td>\n</tr>\n<tr>\n<td><code>binSize</code></td>\n<td>No</td>\n<td><code>15m</code></td>\n<td>Timeline bucket size. Supported values: <code>1m</code>, <code>5m</code>, <code>15m</code>, <code>30m</code>, <code>1h</code>, <code>3h</code>, <code>6h</code>, <code>12h</code>, <code>1d</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li>Returns authentication metrics scoped to the caller’s organization.</li>\n<li>Includes real-user login metrics, bot login totals, and cookie login totals.</li>\n<li><code>startTime</code> may be provided as an ISO 8601 string or Unix timestamp in seconds or milliseconds.</li>\n<li>Requests with <code>startTime</code> older than 90 days are rejected.</li>\n<li>Requests where <code>endTime</code> is before <code>startTime</code> are rejected.</li>\n<li>Only <code>SUPER_ADMIN</code> users can access this endpoint.</li>\n</ul>\n<h3 id=\"authentication-audit-metrics-success-example\">Authentication Audit Metrics Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">GET /analytics/metrics/auth?appid=ALL&amp;startTime=2026-05-05T09:00:00-04:00&amp;endTime=2026-05-05T12:00:00-04:00&amp;binSize=1h HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nAccept: application/json\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"orgCode\": \"acme\",\n  \"appId\": \"ALL\",\n  \"reportGeneratedAt\": \"2026-05-05T12:05:00-04:00\",\n  \"timeRange\": {\n    \"start\": \"2026-05-05T09:00:00-04:00\",\n    \"end\": \"2026-05-05T12:00:00-04:00\"\n  },\n  \"totalCookieLogins\": 18,\n  \"realUsers\": {\n    \"totalLoginAttempts\": 142,\n    \"successTimeline\": [\n      {\n        \"timestamp\": \"2026-05-05T09:00:00.000Z\",\n        \"count\": 41\n      },\n      {\n        \"timestamp\": \"2026-05-05T10:00:00.000Z\",\n        \"count\": 48\n      },\n      {\n        \"timestamp\": \"2026-05-05T11:00:00.000Z\",\n        \"count\": 39\n      }\n    ],\n    \"failureTimeline\": [\n      {\n        \"timestamp\": \"2026-05-05T09:00:00.000Z\",\n        \"count\": 4\n      },\n      {\n        \"timestamp\": \"2026-05-05T10:00:00.000Z\",\n        \"count\": 6\n      },\n      {\n        \"timestamp\": \"2026-05-05T11:00:00.000Z\",\n        \"count\": 4\n      }\n    ],\n    \"authenticatorTypeBreakdown\": [\n      {\n        \"category\": \"mobile\",\n        \"count\": 91\n      },\n      {\n        \"category\": \"webauthn\",\n        \"count\": 37\n      }\n    ],\n    \"loginMethodBreakdown\": {\n      \"success\": [\n        {\n          \"category\": \"DID\",\n          \"count\": 82\n        },\n        {\n          \"category\": \"WebAuthn\",\n          \"count\": 37\n        }\n      ],\n      \"failure\": [\n        {\n          \"category\": \"DID\",\n          \"count\": 9\n        },\n        {\n          \"category\": \"QID\",\n          \"count\": 5\n        }\n      ],\n      \"successfulAuthenticationPlatform\": [\n        {\n          \"category\": \"ios\",\n          \"count\": 58\n        },\n        {\n          \"category\": \"android\",\n          \"count\": 33\n        },\n        {\n          \"category\": \"webauthn\",\n          \"count\": 37\n        }\n      ]\n    },\n    \"uniqueUserLogins\": [\n      {\n        \"status\": \"success\",\n        \"totalEvents\": 128,\n        \"uniqueUsers\": 76\n      },\n      {\n        \"status\": \"failed:INVALID_VALIDATION_CODE\",\n        \"totalEvents\": 8,\n        \"uniqueUsers\": 5\n      }\n    ]\n  },\n  \"bots\": {\n    \"totalLoginAttempts\": 11\n  }\n}\n</code></pre>\n<h3 id=\"authentication-audit-metrics-error-example---not-super-admin\">Authentication Audit Metrics Error Example - Not Super Admin</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 403 Forbidden\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"Forbidden\",\n  \"message\": \"Only superadmin users can access this endpoint\"\n}\n</code></pre>\n<h3 id=\"authentication-audit-metrics-error-example---invalid-time-range\">Authentication Audit Metrics Error Example - Invalid Time Range</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 400 Bad Request\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"Bad Request\",\n  \"message\": \"The 'startTime' cannot be older than 90 days.\"\n}\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"f7741086-b514-46d5-9b81-33186f4a47ed","name":"Audit Log","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://{env}.scrambleid.com/api/v1/analytics/metrics/auth?appid=ALL&startTime=2026-05-05T09:00:00-04:00&endTime=2026-05-05T12:00:00-04:00&binSize=1h","protocol":"https","host":["{env}","scrambleid","com"],"path":["api","v1","analytics","metrics","auth"],"query":[{"key":"appid","value":"ALL"},{"key":"startTime","value":"2026-05-05T09:00:00-04:00"},{"key":"endTime","value":"2026-05-05T12:00:00-04:00"},{"key":"binSize","value":"1h"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 14 Sep 2023 16:14:10 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1401"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"5008e811-f153-407f-9fac-254adb8dd588"},{"key":"access-control-allow-origin","value":"*"},{"key":"x-amz-apigw-id","value":"LQSk-HqJoAMFk1A="},{"key":"X-Amzn-Trace-Id","value":"Root=1-65033152-3b1bee31201f0adb7bef510e;Sampled=0;lineage=34a1364e:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n  \"orgCode\": \"acme\",\n  \"appId\": \"ALL\",\n  \"reportGeneratedAt\": \"2026-05-05T12:05:00-04:00\",\n  \"timeRange\": {\n    \"start\": \"2026-05-05T09:00:00-04:00\",\n    \"end\": \"2026-05-05T12:00:00-04:00\"\n  },\n  \"totalCookieLogins\": 18,\n  \"realUsers\": {\n    \"totalLoginAttempts\": 142,\n    \"successTimeline\": [\n      {\n        \"timestamp\": \"2026-05-05T09:00:00.000Z\",\n        \"count\": 41\n      }\n    ],\n    \"failureTimeline\": [\n      {\n        \"timestamp\": \"2026-05-05T09:00:00.000Z\",\n        \"count\": 4\n      }\n    ],\n    \"authenticatorTypeBreakdown\": [\n      {\n        \"category\": \"mobile\",\n        \"count\": 91\n      }\n    ],\n    \"loginMethodBreakdown\": {\n      \"success\": [\n        {\n          \"category\": \"DID\",\n          \"count\": 82\n        }\n      ],\n      \"failure\": [\n        {\n          \"category\": \"DID\",\n          \"count\": 9\n        }\n      ],\n      \"successfulAuthenticationPlatform\": [\n        {\n          \"category\": \"ios\",\n          \"count\": 58\n        }\n      ]\n    },\n    \"uniqueUserLogins\": [\n      {\n        \"status\": \"success\",\n        \"totalEvents\": 128,\n        \"uniqueUsers\": 76\n      }\n    ]\n  },\n  \"bots\": {\n    \"totalLoginAttempts\": 11\n  }\n}\n"}],"_postman_id":"519232f4-2564-424f-a36f-5baec7f35238"}],"id":"d1af79fb-5858-4db6-bd6b-1444feb3fd2e","description":"<h2 id=\"audit-apis\">Audit APIs</h2>\n<p>ScrambleID Audit APIs provide read-only access to security and authentication activity for an organization. These endpoints are intended for compliance reporting, operational monitoring, and investigation workflows.</p>\n<p>Audit API responses may include authentication activity, IVR activity, bot activity, and related event metrics depending on the endpoint being used.</p>\n<p>Access to Audit APIs is restricted to authorized callers. Requests must include a valid bearer token, and the authenticated user must have the required organization-level permissions.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"a4eb580a-abc3-4cc4-a867-314ce7142af3","type":"text/javascript","requests":{},"exec":[""]}},{"listen":"test","script":{"id":"445a07f3-a818-401f-95dc-adcb02b597ca","type":"text/javascript","requests":{},"exec":[""]}}],"_postman_id":"d1af79fb-5858-4db6-bd6b-1444feb3fd2e"},{"name":"OAuth","item":[{"name":"Generate Token","event":[{"listen":"test","script":{"id":"ee393891-d768-408b-abc2-923ed111936c","exec":["let json = pm.response.json();\r","pm.environment.set('accessToken', json.access_token)"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"b7d94f4e-7fe9-42b6-96bc-2a9aa42710dd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"","description":"<h3 id=\"oauth-token-generation\">OAuth Token Generation</h3>\n<p>Use <code>POST</code> to generate an OAuth access token with the Client Credentials grant.</p>\n<p><code>POST /oauth/token</code></p>\n<p>The returned access token is used to call protected ScrambleID APIs by sending it in the <code>Authorization</code> header as a bearer token.</p>\n<h4 id=\"request-headers\">Request Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code> or <code>application/x-www-form-urlencoded</code>.</td>\n</tr>\n<tr>\n<td><code>Accept</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td>Optional</td>\n<td>Basic auth credentials in the format <code>Basic</code> . If provided, <code>client_id</code> and <code>client_secret</code> do not need to be sent in the body.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-body\">Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>grant_type</code></td>\n<td>Yes</td>\n<td>Must be <code>client_credentials</code>.</td>\n</tr>\n<tr>\n<td><code>client_id</code></td>\n<td>Required unless using Basic auth</td>\n<td>OAuth client ID.</td>\n</tr>\n<tr>\n<td><code>client_secret</code></td>\n<td>Required unless using Basic auth</td>\n<td>OAuth client secret.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li><p>Only the <code>client_credentials</code> grant type is supported on <code>/oauth/token</code>.</p>\n</li>\n<li><p>The client must exist and have status <code>ACTIVE</code>.</p>\n</li>\n<li><p>The token’s scopes are determined by the configured client credentials.</p>\n</li>\n<li><p>The token’s organization context is determined by the configured client credentials.</p>\n</li>\n<li><p>Successful responses include <code>Cache-Control: no-store</code> and <code>Pragma: no-cache</code>.</p>\n</li>\n</ul>\n<h3 id=\"oauth-token-generation-success-example\">OAuth Token Generation Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">POST /oauth/token HTTP/1.1\nContent-Type: application/json\nAccept: application/json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"grant_type\": \"client_credentials\",\n  \"client_id\": \"8f0c7d5a-2c8b-44a1-b62d-7d82f5e6b111\",\n  \"client_secret\": \"client-secret-value\"\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/json\nCache-Control: no-store\nPragma: no-cache\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"access_token\": \"&lt;jwt_access_token&gt;\",\n  \"jti\": \"5e91848b-53a1-43de-9c44-7dc3d65ecf1b\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"scope\": \"scim.read scim.write scim.delete\"\n}\n\n</code></pre>\n<h3 id=\"oauth-token-generation-error-example---invalid-client-credentials\">OAuth Token Generation Error Example - Invalid Client Credentials</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 401 Unauthorized\nContent-Type: application/json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"invalid_client\",\n  \"error_description\": \"Invalid client_id or client_secret\"\n}\n\n</code></pre>\n<h3 id=\"oauth-token-generation-error-example---unsupported-grant-type\">OAuth Token Generation Error Example - Unsupported Grant Type</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 400 Bad Request\nContent-Type: application/json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"unsupported_grant_type\",\n  \"error_description\": \"Unsupported Grant Type\"\n}\n\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"babe1f01-5d43-46c9-a437-e94e5414d08e","name":"Get Token","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"grant_type\": \"client_credentials\",\n    \"client_id\": \"8f0c7d5a-2c8b-44a1-b62d-7d82f5e6b111\",\n    \"client_secret\": \"client-secret-value\"\n  }","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/oauth/token"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 08 Nov 2023 16:38:57 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"558"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"effe552a-2a93-4f93-a630-e930f0ae5a13"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"OFnxRH_ioAMFTPA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-654bb9a1-1d5da8cd058f531363bd9934;Sampled=0;lineage=545c2247:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n  \"access_token\": \"<jwt_access_token>\",\n  \"jti\": \"5e91848b-53a1-43de-9c44-7dc3d65ecf1b\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"scope\": \"scim.read scim.write scim.delete\"\n}\n"}],"_postman_id":"b7d94f4e-7fe9-42b6-96bc-2a9aa42710dd"},{"name":"introspect","id":"49b43d40-7632-49f9-ad50-e51fe9ccaa21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"urlencoded","urlencoded":[]},"url":"","description":"<h3 id=\"oauth-token-introspection\">OAuth Token Introspection</h3>\n<p>Use <code>POST</code> to validate an existing OAuth access token and return token metadata.</p>\n<p><code>POST /oauth/introspect</code></p>\n<p>This endpoint is useful when an integration needs to confirm whether a token is active before using it to call protected APIs.</p>\n<h4 id=\"request-headers\">Request Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code> or <code>application/x-www-form-urlencoded</code>.</td>\n</tr>\n<tr>\n<td><code>Accept</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-body\">Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>token</code></td>\n<td>Yes</td>\n<td>The OAuth access token to validate.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li>The token must be a well-formed JWT.</li>\n<li>A valid token returns <code>active: true</code> and token metadata.</li>\n<li>An expired, invalid, or unverifiable token returns <code>active: false</code>.</li>\n<li>The public introspection response does not include <code>orgCode</code>.</li>\n<li>The response uses OAuth-style fields, not the ScrambleID business API response envelope.</li>\n</ul>\n<h3 id=\"oauth-token-introspection-success-example\">OAuth Token Introspection Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">POST /oauth/introspect HTTP/1.1\nContent-Type: application/json\nAccept: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"token\": \"&lt;jwt_access_token&gt;\"\n}\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"active\": true,\n  \"client_id\": \"8f0c7d5a-2c8b-44a1-b62d-7d82f5e6b111\",\n  \"sub\": \"8f0c7d5a-2c8b-44a1-b62d-7d82f5e6b111\",\n  \"scope\": \"scim.read scim.write scim.delete\",\n  \"iss\": \"https://{env}.scrambleid.com\",\n  \"gty\": \"client_credentials\",\n  \"token_class\": \"scrambleid_managed\",\n  \"grant_type\": \"client_credentials\",\n  \"exp\": 1777998600,\n  \"jti\": \"5e91848b-53a1-43de-9c44-7dc3d65ecf1b\"\n}\n</code></pre>\n<h3 id=\"oauth-token-introspection-response-example---inactive-token\">OAuth Token Introspection Response Example - Inactive Token</h3>\n<p>An invalid, expired, or unverifiable token returns <code>active: false</code>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"active\": false\n}\n</code></pre>\n<h3 id=\"oauth-token-introspection-error-example---missing-token\">OAuth Token Introspection Error Example - Missing Token</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 400 Bad Request\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"invalid_request\",\n  \"error_description\": \"token parameter is required\"\n}\n</code></pre>\n<h3 id=\"oauth-token-introspection-error-example---invalid-token-format\">OAuth Token Introspection Error Example - Invalid Token Format</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 400 Bad Request\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"invalid_token\",\n  \"error_description\": \"The token format is invalid\"\n}\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"da82310c-4d4f-442e-bded-9ed7e70016a0","name":"Introspect Token","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"token\": \"<jwt_access_token>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/oauth/introspect"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 08 Nov 2023 16:40:23 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"63"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"c836fd72-c107-4a68-a558-35a628834261"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"OFn-wHFZIAMFZvg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-654bb9f7-1f390bf170be1d4a49227bfd;Sampled=0;lineage=545c2247:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n  \"active\": true,\n  \"client_id\": \"8f0c7d5a-2c8b-44a1-b62d-7d82f5e6b111\",\n  \"sub\": \"8f0c7d5a-2c8b-44a1-b62d-7d82f5e6b111\",\n  \"scope\": \"scim.read scim.write scim.delete\",\n  \"iss\": \"https://{env}.scrambleid.com\",\n  \"gty\": \"client_credentials\",\n  \"token_class\": \"scrambleid_managed\",\n  \"grant_type\": \"client_credentials\",\n  \"exp\": 1777998600,\n  \"jti\": \"5e91848b-53a1-43de-9c44-7dc3d65ecf1b\"\n}\n"}],"_postman_id":"49b43d40-7632-49f9-ad50-e51fe9ccaa21"}],"id":"643d1b57-09ea-4cbe-b285-42ac68369464","description":"<h2 id=\"oauth-apis\">OAuth APIs</h2>\n<p>ScrambleID OAuth APIs issue and validate bearer tokens for protected API access.</p>\n<p>Base URL:</p>\n<p><code>https://{env}.scrambleid.com/api/v1</code></p>\n<p>OAuth responses use OAuth-style response bodies, not the ScrambleID business API response envelope.</p>\n<h3 id=\"supported-oauth-endpoints\">Supported OAuth Endpoints</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Endpoint</strong></th>\n<th><strong>Method</strong></th>\n<th><strong>Purpose</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>/oauth/token</code></td>\n<td>POST</td>\n<td>Issues an access token using the Client Credentials grant.</td>\n</tr>\n<tr>\n<td><code>/oauth/introspect</code></td>\n<td>POST</td>\n<td>Validates an access token and returns token metadata.</td>\n</tr>\n<tr>\n<td><code>/.well-known/jwks.json</code></td>\n<td>GET</td>\n<td>Returns the public JWKS used to verify ScrambleID-issued JWTs.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"authorization-usage\">Authorization Usage</h3>\n<p>Send OAuth access tokens to protected APIs with:</p>\n<p><code>Authorization: Bearer &lt;access_token&gt;</code></p>\n<p>The organization context and scopes are resolved from the token claims.</p>\n<h3 id=\"common-scopes\">Common Scopes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Scope</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>scim.read</code></td>\n<td>Read SCIM users and schemas.</td>\n</tr>\n<tr>\n<td><code>scim.write</code></td>\n<td>Create, replace, or patch SCIM users.</td>\n</tr>\n<tr>\n<td><code>scim.delete</code></td>\n<td>Delete SCIM users.</td>\n</tr>\n<tr>\n<td><code>audit.read</code></td>\n<td>Read audit or analytics data.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Protected APIs enforce the scope required by the endpoint or HTTP method.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"f2f9c174-fc94-45ae-812f-d68c66ca24bf","type":"text/javascript","requests":{},"exec":[""]}},{"listen":"test","script":{"id":"2f83c8eb-1bb2-4457-83e1-e07132a56342","type":"text/javascript","requests":{},"exec":[""]}}],"_postman_id":"643d1b57-09ea-4cbe-b285-42ac68369464"},{"name":"IVR","item":[{"name":"Generate Code","id":"7f9e0463-c218-4325-8f03-a604358d53ff","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[],"url":"","description":"<h3 id=\"generate-ivr-code\">Generate IVR Code</h3>\n<p>Use <code>POST</code> to create a new IVR authentication session and return a short-lived IVR code.</p>\n<p><code>POST /ivr/code</code></p>\n<p>The IVR system can announce the returned code to the caller. The caller then confirms authentication through ScrambleID, and the IVR system checks the result with the validation endpoint.</p>\n<h4 id=\"request-headers\">Request Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Authorization</code></td>\n<td>Yes</td>\n<td>Bearer access token. Format: <code>Bearer</code> .</td>\n</tr>\n<tr>\n<td><code>Content-Type</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n<tr>\n<td><code>Accept</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-body\">Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>callerNumber</code></td>\n<td>No</td>\n<td>Caller phone number in E.164 format. Required when <code>failIfAniNotFound</code> is <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>calledNumber</code></td>\n<td>No</td>\n<td>Phone number the caller dialed, in E.164 format.</td>\n</tr>\n<tr>\n<td><code>callSessionId</code></td>\n<td>No</td>\n<td>IVR or carrier call session identifier for traceability.</td>\n</tr>\n<tr>\n<td><code>callStartTime</code></td>\n<td>No</td>\n<td>Call start timestamp.</td>\n</tr>\n<tr>\n<td><code>stirShakenVerStat</code></td>\n<td>No</td>\n<td>Carrier-provided STIR/SHAKEN verification status.</td>\n</tr>\n<tr>\n<td><code>failIfAniNotFound</code></td>\n<td>No</td>\n<td>If <code>true</code>, code generation fails unless <code>callerNumber</code> matches a user in the authenticated organization.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"stirshaken-values\">STIR/SHAKEN Values</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Value</strong></th>\n<th><strong>Behavior</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>TN-Validation-Passed</code></td>\n<td>Caller number passed carrier verification. ScrambleID may send a push notification if all push conditions are met.</td>\n</tr>\n<tr>\n<td><code>TN-Validation-Failed</code></td>\n<td>Caller number failed carrier verification. ScrambleID does not send a push notification.</td>\n</tr>\n<tr>\n<td><code>No-TN-Validation</code></td>\n<td>No carrier validation was available. ScrambleID does not send a push notification.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If <code>stirShakenVerStat</code> is omitted, ScrambleID treats it as <code>No-TN-Validation</code>.</p>\n<h4 id=\"push-notification-conditions\">Push Notification Conditions</h4>\n<p>ScrambleID sends an IVR push notification only when all of the following are true:</p>\n<ul>\n<li><p><code>stirShakenVerStat</code> is <code>TN-Validation-Passed</code>.</p>\n</li>\n<li><p><code>callerNumber</code> is provided.</p>\n</li>\n<li><p>IVR push notifications are enabled for the organization.</p>\n</li>\n<li><p>The caller number can be matched to an eligible user/device.</p>\n</li>\n<li><p>The user has at least one device eligible to receive the notification.</p>\n</li>\n</ul>\n<p>If push notification is skipped or fails, the IVR code may still be generated and returned.</p>\n<h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li><p>Generates a short-lived IVR code.</p>\n</li>\n<li><p>Stores the IVR session for later validation.</p>\n</li>\n<li><p>Returns the generated code, expiry time, and tracking ID.</p>\n</li>\n<li><p>If <code>failIfAniNotFound</code> is <code>true</code>, ScrambleID validates that the caller number belongs to a user in the authenticated organization before creating the code.</p>\n</li>\n<li><p>The organization context is resolved from the bearer token.</p>\n</li>\n</ul>\n<h3 id=\"generate-ivr-code-success-example\">Generate IVR Code Success Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">POST /ivr/code HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/json\nAccept: application/json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"callerNumber\": \"+14155550123\",\n  \"calledNumber\": \"+18005550100\",\n  \"callSessionId\": \"call-01HXAMPLE\",\n  \"callStartTime\": \"2026-05-05T14:30:00.000Z\",\n  \"stirShakenVerStat\": \"TN-Validation-Passed\",\n  \"failIfAniNotFound\": false\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/json\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"ivrcode\": \"123456\",\n    \"notifiedDeviceCount\": 1,\n    \"codeExpiryTime\": 120,\n    \"trackingId\": \"f3b8cb61-7f8f-4f12-9f9d-6232f66bb8c4\"\n  },\n  \"error\": null,\n  \"meta\": {\n    \"requestId\": \"0d29f4a9-ef9a-48c8-9441-44c7f52d3c5d\",\n    \"timestamp\": \"2026-05-05T14:30:01.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n\n</code></pre>\n<h3 id=\"generate-ivr-code-error-example---ani-not-found\">Generate IVR Code Error Example - ANI Not Found</h3>\n<p>If <code>failIfAniNotFound</code> is <code>true</code> and <code>callerNumber</code> does not match a user in the authenticated organization, ScrambleID returns an error.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"data\": null,\n  \"error\": {\n    \"code\": \"NO_DATA_FOUND\",\n    \"message\": \"No matching ANI found\",\n    \"details\": null\n  },\n  \"meta\": {\n    \"requestId\": \"9c7f2334-f53f-4219-9f70-23d91c51a76e\",\n    \"timestamp\": \"2026-05-05T14:30:01.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n\n</code></pre>\n<h3 id=\"generate-ivr-code-error-example---invalid-caller-number\">Generate IVR Code Error Example - Invalid Caller Number</h3>\n<p>Caller numbers must use E.164 format.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"data\": null,\n  \"error\": {\n    \"code\": \"INVALID_MOBILE_NUMBER\",\n    \"message\": \"Invalid phone number format. Please follow the E.164 format.\",\n    \"details\": null\n  },\n  \"meta\": {\n    \"requestId\": \"b82b62d2-5c0b-43f7-8780-c13e5ab4d726\",\n    \"timestamp\": \"2026-05-05T14:30:01.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n\n</code></pre>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"9ccf5689-15ea-4a12-b1c4-b99e901c0515","id":"9ccf5689-15ea-4a12-b1c4-b99e901c0515","name":"IVR","type":"folder"}},"urlObject":{"query":[],"variable":[]}},"response":[{"id":"a56b2c0a-37d7-421e-9ace-06506d148c2d","name":"Generate Code","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"callerNumber\": \"+14155550123\",\n    \"callSessionId\": \"call-01HXAMPLE\",\n    \"callStartTime\": \"2026-05-05T14:30:00.000Z\",\n    \"stirShakenVerStat\": \"TN-Validation-Passed\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/ivr/code"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"ivrcode\": \"123456\",\n    \"notifiedDeviceCount\": 1,\n    \"codeExpiryTime\": 120,\n    \"trackingId\": \"f3b8cb61-7f8f-4f12-9f9d-6232f66bb8c4\"\n  },\n  \"error\": null,\n  \"meta\": {\n    \"requestId\": \"0d29f4a9-ef9a-48c8-9441-44c7f52d3c5d\",\n    \"timestamp\": \"2026-05-05T14:30:01.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n"}],"_postman_id":"7f9e0463-c218-4325-8f03-a604358d53ff"},{"name":"Validate Code","id":"7c3ce673-5268-45e0-9338-acda6dcfb83a","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"url":"","description":"<h3 id=\"validate-ivr-code\">Validate IVR Code</h3>\n<p>Use <code>POST</code> to check the status of an IVR authentication session.</p>\n<p><code>POST /ivr/validate</code></p>\n<p>The IVR system calls this endpoint with the code returned by <code>/ivr/code</code>. The response indicates whether the user has approved, rejected, or not yet completed the authentication request.</p>\n<h4 id=\"request-headers\">Request Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Authorization</code></td>\n<td>Yes</td>\n<td>Bearer access token. Format: <code>Bearer &lt;access_token&gt;</code>.</td>\n</tr>\n<tr>\n<td><code>Content-Type</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n<tr>\n<td><code>Accept</code></td>\n<td>Recommended</td>\n<td>Use <code>application/json</code>.</td>\n</tr>\n<tr>\n<td><code>polling</code></td>\n<td>No</td>\n<td>Defaults to polling behavior. Set to <code>false</code> when this is a manual verification request.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-body\">Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Required</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>Yes</td>\n<td>IVR code returned by the Generate IVR Code endpoint.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-status-values\">Response Status Values</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>USER_VALIDATED</code></td>\n<td>The user approved the IVR authentication request.</td>\n</tr>\n<tr>\n<td><code>NOT_VALIDATED_YET</code></td>\n<td>The user has not approved or rejected the request yet. Continue polling until the code expires or reaches a terminal status.</td>\n</tr>\n<tr>\n<td><code>USER_CONSENT_REJECTED</code></td>\n<td>The user rejected the IVR authentication request.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"behavior\">Behavior</h4>\n<ul>\n<li>Returns the current validation status for the IVR code.</li>\n<li>The code must belong to the organization associated with the bearer token.</li>\n<li>If the user approves the request, the response includes basic user details.</li>\n<li>If the code is not found or expired, the API returns an error.</li>\n<li>The organization context is resolved from the bearer token.</li>\n</ul>\n<h3 id=\"validate-ivr-code-success-example---user-validated\">Validate IVR Code Success Example - User Validated</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">POST /ivr/validate HTTP/1.1\nAuthorization: Bearer &lt;access_token&gt;\nContent-Type: application/json\nAccept: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"code\": \"123456\"\n}\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">HTTP/1.1 200 OK\nContent-Type: application/json\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"ivrcode\": \"123456\",\n    \"trackingId\": \"f3b8cb61-7f8f-4f12-9f9d-6232f66bb8c4\",\n    \"status\": \"USER_VALIDATED\",\n    \"authenticationMethod\": \"PUSH_NOTIFICATION\",\n    \"user\": {\n      \"primaryAttr\": \"john.doe\",\n      \"ldapId\": \"john.doe\",\n      \"lastName\": \"Doe\",\n      \"userName\": \"john.doe\",\n      \"firstName\": \"John\",\n      \"primaryEmail\": \"john.doe@example.com\"\n    }\n  },\n  \"error\": null,\n  \"meta\": {\n    \"requestId\": \"5a414256-4064-46f8-a6f8-8a28bb1d2d13\",\n    \"timestamp\": \"2026-05-05T14:31:00.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n</code></pre>\n<h3 id=\"validate-ivr-code-example---not-validated-yet\">Validate IVR Code Example - Not Validated Yet</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"ivrcode\": \"123456\",\n    \"trackingId\": \"f3b8cb61-7f8f-4f12-9f9d-6232f66bb8c4\",\n    \"status\": \"NOT_VALIDATED_YET\"\n  },\n  \"error\": null,\n  \"meta\": {\n    \"requestId\": \"c8f8f1c7-3a2f-4c95-b4f1-8d9f53f8df91\",\n    \"timestamp\": \"2026-05-05T14:30:20.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n</code></pre>\n<h3 id=\"validate-ivr-code-example---user-rejected\">Validate IVR Code Example - User Rejected</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"ivrcode\": \"123456\",\n    \"trackingId\": \"f3b8cb61-7f8f-4f12-9f9d-6232f66bb8c4\",\n    \"status\": \"USER_CONSENT_REJECTED\"\n  },\n  \"error\": null,\n  \"meta\": {\n    \"requestId\": \"311e4356-5e89-4a47-92d4-77b4f868e031\",\n    \"timestamp\": \"2026-05-05T14:30:45.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n</code></pre>\n<h3 id=\"validate-ivr-code-error-example---code-not-found\">Validate IVR Code Error Example - Code Not Found</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"data\": null,\n  \"error\": {\n    \"code\": \"CODE_NOT_FOUND\",\n    \"message\": \"Requested code not found\",\n    \"details\": [\n      {\n        \"field\": \"ivrcode\",\n        \"issue\": \"Requested code not found\",\n        \"value\": \"123456\"\n      }\n    ]\n  },\n  \"meta\": {\n    \"requestId\": \"e74dd864-99de-4637-b9ff-44ee3fa93459\",\n    \"timestamp\": \"2026-05-05T14:32:01.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"32ebf2be-519f-4005-98c5-344441ab88f5","name":"Validate Code","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer <access_token>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"code\": \"123456\"\n  }","options":{"raw":{"language":"json"}}},"url":"https://{env}.scrambleid.com/api/v1/ivr/validate"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"ivrcode\": \"123456\",\n    \"trackingId\": \"f3b8cb61-7f8f-4f12-9f9d-6232f66bb8c4\",\n    \"status\": \"USER_VALIDATED\",\n    \"authenticationMethod\": \"PUSH_NOTIFICATION\",\n    \"user\": {\n      \"primaryAttr\": \"john.doe\",\n      \"ldapId\": \"john.doe\",\n      \"lastName\": \"Doe\",\n      \"userName\": \"john.doe\",\n      \"firstName\": \"John\",\n      \"primaryEmail\": \"john.doe@example.com\"\n    }\n  },\n  \"error\": null,\n  \"meta\": {\n    \"requestId\": \"5a414256-4064-46f8-a6f8-8a28bb1d2d13\",\n    \"timestamp\": \"2026-05-05T14:31:00.000Z\",\n    \"schemaVersion\": \"1.0\"\n  }\n}\n"}],"_postman_id":"7c3ce673-5268-45e0-9338-acda6dcfb83a"}],"id":"9ccf5689-15ea-4a12-b1c4-b99e901c0515","description":"<h2 id=\"ivr-apis\">IVR APIs</h2>\n<p>ScrambleID IVR APIs support phone-based authentication flows where a caller proves identity by confirming a short-lived IVR code through ScrambleID.</p>\n<p>The IVR flow has two main steps:</p>\n<ol>\n<li>Generate an IVR code for the active phone session.</li>\n<li>Validate the IVR code to determine whether the user has approved, rejected, or not yet completed authentication.</li>\n</ol>\n<p>These APIs are intended for IVR systems and telephony integrations. Requests are scoped to the organization associated with the authenticated bearer token.</p>\n<h3 id=\"ivr-endpoints\">IVR Endpoints</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Endpoint</strong></th>\n<th><strong>Method</strong></th>\n<th><strong>Purpose</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>/ivr/code</code></td>\n<td>POST</td>\n<td>Creates a new IVR authentication session and returns a short-lived code.</td>\n</tr>\n<tr>\n<td><code>/ivr/validate</code></td>\n<td>POST</td>\n<td>Checks the status of an IVR authentication session by code.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"authorization\">Authorization</h3>\n<p>All IVR API requests require:</p>\n<p><code>Authorization: Bearer &lt;access_token&gt;</code></p>\n<p>The access token must include the scope required for the requested IVR operation.</p>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>IVR codes are short-lived and intended for a single authentication session.</li>\n<li>Validation may return a pending status while the user has not yet approved or rejected the request.</li>\n<li>The organization context is resolved from the bearer token, not from a request body field.</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"9073d203-35ba-4073-a353-9ccab7ccc824","type":"text/javascript","requests":{},"exec":[""]}},{"listen":"test","script":{"id":"c293423d-57ef-49c2-a10e-73d50c039b6a","type":"text/javascript","requests":{},"exec":[""]}}],"_postman_id":"9ccf5689-15ea-4a12-b1c4-b99e901c0515"},{"name":"Bot Automation","item":[{"name":"Bot Account Creation","item":[{"name":"Create Bot","id":"be98ece3-a3f8-4c51-b428-72c877b2a847","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"POST","header":[{"key":"x-org","value":"orgCode","description":"<p>Organization Code</p>\n"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"userName\": \"bot_demo\",\n    \"managerEmail\":\"test@manager.com\",\n    \"userType\":\"bot\",\n    \"ldapId\": \"abc123\",\n    \"roles\": [\"USER\"],\n        \"scrambleOps\": {\n          \"sendActivation\":true\n      }\n    \n}"},"url":"{{baseUrl}}/scim/v2/users","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["scim","v2","users"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"11078744-add3-4e14-ab09-e0b64de6f971","name":"Create Bot -success","originalRequest":{"method":"POST","header":[{"key":"x-org","value":"orgCode","description":"Organization Code"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"userName\": \"bot_demo\",\n    \"managerEmail\":\"test@manager.com\",\n    \"userType\":\"bot\",\n    \"ldapId\": \"abc123\",\n    \"roles\": [\"USER\"],\n        \"scrambleOps\": {\n          \"sendActivation\":true\n      }\n    \n}"},"url":"{{baseUrl}}/scim/v2/users"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 16:23:05 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"453"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"39e53387-9b17-43f5-9e18-67e26fc7b8f4"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"c3ggjEKzoAMFaxA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66c61469-774ff6e95566efe878e29a3f;Parent=2d8955f52fa1c023;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n    ],\n    \"id\": \"bot_demo\",\n    \"userName\": \"bot_demo\",\n    \"name\": {\n        \"givenName\": \"bot_demo\"\n    },\n    \"scrambleMeta\": {\n        \"registered\": false\n    },\n    \"active\": true,\n    \"groups\": [],\n    \"roles\": [\n        \"USER\"\n    ],\n    \"managerEmail\": \"test@manager.com\",\n    \"userType\": \"bot\",\n    \"ldapId\": \"abc123\",\n    \"unixLoginAttribs\": [\n        \"bot_demo\"\n    ],\n    \"windowsLoginAttribs\": [\n        \"bot_demo\"\n    ],\n    \"meta\": {\n        \"resourceType\": \"User\",\n        \"created\": \"2024-08-21T16:23:05.733Z\",\n        \"lastModified\": \"2024-08-21T16:23:05.733Z\"\n    }\n}"},{"id":"c856a1e6-8bb1-42a5-8d1c-c8fe679fea63","name":"Create Bot - user exists","originalRequest":{"method":"POST","header":[{"key":"x-org","value":"orgCode","description":"Organization Code"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"userName\": \"bot_demo\",\n    \"managerEmail\":\"test@manager.com\",\n    \"userType\":\"bot\",\n    \"ldapId\": \"abc123\",\n    \"roles\": [\"USER\"],\n        \"scrambleOps\": {\n          \"sendActivation\":true\n      }\n    \n}"},"url":"{{baseUrl}}/scim/v2/users"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 16:26:00 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"103"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"806e64f7-05a1-4df0-a12d-2607ecfeec17"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"c3g72HbRoAMFoPA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66c61518-5f71c803510e1ae07afb7f41;Parent=1986150818779f0a;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:api:messages:2.0:Error\"\n    ],\n    \"detail\": \"user already exists\",\n    \"status\": 409\n}"}],"_postman_id":"be98ece3-a3f8-4c51-b428-72c877b2a847"}],"id":"74b2ad55-1795-46da-8d24-58d7f70487be","description":"<p><strong>Bot Account Creation:</strong></p>\n<ul>\n<li><p><strong>User Type and Manager Email:</strong></p>\n<ul>\n<li><p>When creating a bot account, the <code>userType</code> attribute must be set to <code>\"bot\"</code>.</p>\n</li>\n<li><p>The <code>managerEmail</code> attribute (e.g., <code>\"test@manager.com\"</code>) is mandatory if the <code>userType</code> is <code>\"bot\"</code>.</p>\n</li>\n<li><p>The <code>emails</code> attribute can be omitted when creating a bot account.</p>\n</li>\n<li><p>The <code>name</code> attribute will not be required when creating a bot account.</p>\n</li>\n<li><p>The <code>sendActivation</code>atribute set to <code>true</code>will automatically send the activation code to the manager's email.</p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"74b2ad55-1795-46da-8d24-58d7f70487be","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}}},{"name":"Bot Registration","item":[{"name":"Register bot","id":"56b36ee1-c561-4445-ae34-2afa2f6111f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userName\":\"{{botUserName}}\",\r\n    \"activationCode\":\"112233\",\r\n    \"userType\":\"bot\",\r\n    \"publicKey\": {{publicKey}},\r\n    \"timestamp\": {{timestamp}},\r\n    \"orgCode\": \"orgCode\"\r\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"56b36ee1-c561-4445-ae34-2afa2f6111f0"}],"id":"dd21e379-f5d3-466b-ade1-ab4ea49b2b4d","description":"<p><strong>Registration Implementation for Bot Accounts</strong></p>\n<p><strong>Registration Requirements:</strong></p>\n<p><strong>1. UserName and Email:</strong></p>\n<ul>\n<li>During registration, instead of using the email as the identifier, the userName attribute must be passed.</li>\n</ul>\n<p><strong>2. Additional Attributes:</strong></p>\n<ul>\n<li>Along with userName, the following extra attributes must be included:</li>\n</ul>\n<p>\"orgCode\": The organization code associated with the user.</p>\n<p>\"userType\": Specifies the type of user, which must be \"bot\".</p>\n","_postman_id":"dd21e379-f5d3-466b-ade1-ab4ea49b2b4d","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}}},{"name":"Bot Authentication","item":[{"name":"DID (6-digit alphanumeric code)","item":[{"name":"Step 1 - Generate DID","event":[{"listen":"test","script":{"id":"578ff38b-0af1-452c-abd9-a125fe63e7c0","exec":["let responseData=pm.response.json();\r","pm.environment.set(\"uinqueid\", responseData.did);\r","pm.environment.set(\"orgCode\", responseData.code);"],"type":"text/javascript","packages":{}}}],"id":"3d8dbf5d-b699-4a82-9f16-b52239f585b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{baseUrl}}/login/saml/{{orgAppID}}?SAMLRequest={{replaceWithSaml}}&format=json","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["login","saml","{{orgAppID}}"],"host":["{{baseUrl}}"],"query":[{"key":"SAMLRequest","value":"{{replaceWithSaml}}"},{"key":"format","value":"json"}],"variable":[]}},"response":[{"id":"b3973a21-e89d-44ee-86f0-dd02877e4879","name":"Generate DID - Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/login/saml/ZGVtfHxkZW1vZ3Vlc3QuY29t?SAMLRequest=fZJbbxoxEEb%2Fysrvu7b3AqwFSDSoDVKS0kCJwpvjHRKrvhCPl6b%2Fvs7SSulDeR3PGX9n7ClKa45i0ccXdw%2BvPWDM3qxxKIaDGemDE16iRuGkBRRRic3i9kaUBRPH4KNX3pAPyGVCIkKI2juSrZYzIhuo2lHb5KqrurxW3TiftNUkn4wZtKqBugFGsh0ETMiMpAmJQ%2Bxh5TBKF1OJlXXOWc7HW84FH4maFYzXe5Itk4p2Mg7kS4xHFJS%2BygJVkPbJgO4K5S2VR01PnBr%2FrB19F6D7L7t4uH77sX%2Fgp321M6r61j%2BWbSTZ%2Bo%2FvJ%2B067Z4vqz6dm1Bcb7frfP11syXZ4q%2F%2BlXfYWwgbCCet4Pv9zTljilhWRVsXLS%2F4qBQNY5wieioVkvn0PZ8YFhDmF9stRNnJKKf0IzI9P%2FZdyrparr3R6lf22Qcr4%2F9V0uChorv8MLQKsFKbRdcFQExKxvifVwFkhBk5SINA6Px87b%2Ffav4b&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha512&Signature=uw9h%2FU8KXTJbHt2LLpH33LJhs8D1enuO1966zbAEFUASZRu4zWXnfU2AR2SzUGhD4%2Fu2flxQo9ladF8CQ1hFz8rBhn8WSmHsfFgcSoibwLiH3CgKf0FcIvTMtMp2YtiyuFgx8N3eAnHIWwg30SP6VPDiWUilIsAsQEYarYneMPpJDBA7EsuK3grhvQzC%2FXsvolNwdx6DnWHDf578WN7ydfch97aXjJW6sgk0ieNI%2FWNo6xMTDFKC%2Bz5f%2Fn%2By0RhauS0edil2GQkT81AtlkqOydh13bUJeh3Ybtog9wTESzcrjzMeBj78c2cpTJvHjFpA5Fw4d7X9E%2FuPQoO9kKjqWQ%3D%3D&format=json","host":["{{baseUrl}}"],"path":["login","saml","ZGVtfHxkZW1vZ3Vlc3QuY29t"],"query":[{"key":"SAMLRequest","value":"fZJbbxoxEEb%2Fysrvu7b3AqwFSDSoDVKS0kCJwpvjHRKrvhCPl6b%2Fvs7SSulDeR3PGX9n7ClKa45i0ccXdw%2BvPWDM3qxxKIaDGemDE16iRuGkBRRRic3i9kaUBRPH4KNX3pAPyGVCIkKI2juSrZYzIhuo2lHb5KqrurxW3TiftNUkn4wZtKqBugFGsh0ETMiMpAmJQ%2Bxh5TBKF1OJlXXOWc7HW84FH4maFYzXe5Itk4p2Mg7kS4xHFJS%2BygJVkPbJgO4K5S2VR01PnBr%2FrB19F6D7L7t4uH77sX%2Fgp321M6r61j%2BWbSTZ%2Bo%2FvJ%2B067Z4vqz6dm1Bcb7frfP11syXZ4q%2F%2BlXfYWwgbCCet4Pv9zTljilhWRVsXLS%2F4qBQNY5wieioVkvn0PZ8YFhDmF9stRNnJKKf0IzI9P%2FZdyrparr3R6lf22Qcr4%2F9V0uChorv8MLQKsFKbRdcFQExKxvifVwFkhBk5SINA6Px87b%2Ffav4b"},{"key":"SigAlg","value":"http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha512"},{"key":"Signature","value":"uw9h%2FU8KXTJbHt2LLpH33LJhs8D1enuO1966zbAEFUASZRu4zWXnfU2AR2SzUGhD4%2Fu2flxQo9ladF8CQ1hFz8rBhn8WSmHsfFgcSoibwLiH3CgKf0FcIvTMtMp2YtiyuFgx8N3eAnHIWwg30SP6VPDiWUilIsAsQEYarYneMPpJDBA7EsuK3grhvQzC%2FXsvolNwdx6DnWHDf578WN7ydfch97aXjJW6sgk0ieNI%2FWNo6xMTDFKC%2Bz5f%2Fn%2By0RhauS0edil2GQkT81AtlkqOydh13bUJeh3Ybtog9wTESzcrjzMeBj78c2cpTJvHjFpA5Fw4d7X9E%2FuPQoO9kKjqWQ%3D%3D"},{"key":"format","value":"json"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 23 Oct 2024 05:15:26 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"833"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"e1c5522f-96e5-434c-8454-a680b3ceb1fb"},{"key":"access-control-allow-origin","value":"*"},{"key":"x-amzn-Remapped-Content-Length","value":"833"},{"key":"x-amzn-Remapped-Connection","value":"keep-alive"},{"key":"x-amz-apigw-id","value":"AFnxQGpRoAMFegA="},{"key":"x-amzn-Remapped-Date","value":"Wed, 23 Oct 2024 05:15:26 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"qid\": \"1ab2e09c-164b-4a0e-a801-3568435d320b\",\n    \"did\": \"YXXWGZ\",\n    \"code\": \"dem\",\n    \"orgName\": \"dem\",\n    \"didEnabled\": true,\n    \"source\": \"SAML\",\n    \"appName\": \"HR Portal\",\n    \"url\": \"wss://wsp.qa.scrambleid.com/v1\",\n    \"idTimeout\": 60,\n    \"browserTimeout\": 900,\n    \"confirmationTimeout\": 60,\n    \"redirectUrl\": \"https://demoguest.com/qa/hr\",\n    \"webAuthnEnabled\": true,\n    \"webAuthnRegisterUrl\": \"/register/webauthn/ZGVtfHxkZW1vZ3Vlc3QuY29t\",\n    \"forceAuthnEnabled\": true,\n    \"org\": {\n        \"name\": \"dem\",\n        \"color\": \"#005A8C\",\n        \"logo\": \"https://logos.qa.scrambleid.com/logos/dem.png\",\n        \"logoSize\": {\n            \"width\": 275,\n            \"height\": 69.75\n        },\n        \"title\": \"\",\n        \"bannerText\": \"We eliminate your greatest weakness: static credentials. All of them. There is nothing to store, nothing to steal.\"\n    },\n    \"disallowMultiValuedAttributes\": false,\n    \"webAuthnRoamingAuthenticatorEnabled\": true,\n    \"webAuthnRegistrationEnabled\": true,\n    \"tapToLoginForWindowsEnabled\": false\n}"}],"_postman_id":"3d8dbf5d-b699-4a82-9f16-b52239f585b7"},{"name":"Step 2 - Verify DID (Login)","id":"94a59367-a4f0-408e-8936-2f506f7d7fbe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"uniqueId\": \"{{uinqueid}}\",\r\n    \"suid\": \"{{suid}}\",\r\n    \"zid\": \"{{zid}}\",\r\n    \"timestamp\": 1780211003,\r\n    \"signature\": \"{{signature}}\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/verify/did","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["verify","did"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"2ef074e9-af1a-4811-97e8-5780d480723c","name":"Step 3 - Verify DID (Login) Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"uniqueId\": \"{{uinqueid}}\",\r\n    \"suid\": \"{{suid}}\",\r\n    \"zid\": \"{{zid}}\",\r\n    \"timestamp\": 1780211003,\r\n    \"signature\": \"{{signature}}\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/verify/did"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 23 Oct 2024 05:12:21 GMT","uuid":"e59ff82f-727d-4a77-b442-41923f76d11f"},{"key":"Content-Type","value":"application/json; charset=utf-8","uuid":"221c8f10-3a08-4c71-9cac-80869394fa81"},{"key":"Content-Length","value":"56","uuid":"2acdd6af-9be5-4da7-b0a4-69d1e8dc29e6"},{"key":"Connection","value":"keep-alive","uuid":"6fcf5ef2-d827-466b-bec4-268d3f0155bd"},{"key":"x-amzn-RequestId","value":"004ebf3f-20e4-426d-9f09-f7fe490f3059","uuid":"3299df75-2eee-4105-8f6f-f9453d69e176"},{"key":"access-control-allow-origin","value":"*","uuid":"4b117359-15f9-45bc-911d-0f641f2148cb"},{"key":"x-amzn-Remapped-Content-Length","value":"56","uuid":"8c36f3da-4545-4477-87a6-d996570d01df"},{"key":"x-amzn-Remapped-Connection","value":"keep-alive","uuid":"86b68f59-3349-49e8-9299-c5607d772fda"},{"key":"x-amz-apigw-id","value":"AFnUaGInIAMF3BA=","uuid":"e845c29e-1c01-484d-9ff5-c9b2e3860406"},{"key":"x-amzn-Remapped-Date","value":"Wed, 23 Oct 2024 05:12:21 GMT","uuid":"02470a04-2454-4352-9c64-0e343b47d4cc"}],"cookie":[],"responseTime":null,"body":"{\n    \"resultCode\": 0,\n    \"errorCode\": 0,\n    \"timestamp\": 1729660341745\n}"}],"_postman_id":"94a59367-a4f0-408e-8936-2f506f7d7fbe"}],"id":"418d490a-198b-47d5-8733-25e711077878","_postman_id":"418d490a-198b-47d5-8733-25e711077878","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}}},{"name":"QID","item":[{"name":"Step 1 - Generate QID","event":[{"listen":"test","script":{"id":"578ff38b-0af1-452c-abd9-a125fe63e7c0","exec":["let responseData=pm.response.json();\r","pm.environment.set(\"uinqueid\", responseData.did);\r","pm.environment.set(\"orgCode\", responseData.code);"],"type":"text/javascript","packages":{}}}],"id":"e8912e3a-dbe4-4a5b-b76d-36f6093bd207","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{baseUrl}}/login/saml/{{orgAppID}}?SAMLRequest={{replaceWithSaml}}&format=json","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["login","saml","{{orgAppID}}"],"host":["{{baseUrl}}"],"query":[{"key":"SAMLRequest","value":"{{replaceWithSaml}}"},{"key":"format","value":"json"}],"variable":[]}},"response":[{"id":"db7088b7-0d3f-4a5e-a0bf-9733a0af3ff1","name":"Generate DID - Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/login/saml/ZGVtfHxkZW1vZ3Vlc3QuY29t?SAMLRequest=fZJbbxoxEEb%2Fysrvu7b3AqwFSDSoDVKS0kCJwpvjHRKrvhCPl6b%2Fvs7SSulDeR3PGX9n7ClKa45i0ccXdw%2BvPWDM3qxxKIaDGemDE16iRuGkBRRRic3i9kaUBRPH4KNX3pAPyGVCIkKI2juSrZYzIhuo2lHb5KqrurxW3TiftNUkn4wZtKqBugFGsh0ETMiMpAmJQ%2Bxh5TBKF1OJlXXOWc7HW84FH4maFYzXe5Itk4p2Mg7kS4xHFJS%2BygJVkPbJgO4K5S2VR01PnBr%2FrB19F6D7L7t4uH77sX%2Fgp321M6r61j%2BWbSTZ%2Bo%2FvJ%2B067Z4vqz6dm1Bcb7frfP11syXZ4q%2F%2BlXfYWwgbCCet4Pv9zTljilhWRVsXLS%2F4qBQNY5wieioVkvn0PZ8YFhDmF9stRNnJKKf0IzI9P%2FZdyrparr3R6lf22Qcr4%2F9V0uChorv8MLQKsFKbRdcFQExKxvifVwFkhBk5SINA6Px87b%2Ffav4b&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha512&Signature=uw9h%2FU8KXTJbHt2LLpH33LJhs8D1enuO1966zbAEFUASZRu4zWXnfU2AR2SzUGhD4%2Fu2flxQo9ladF8CQ1hFz8rBhn8WSmHsfFgcSoibwLiH3CgKf0FcIvTMtMp2YtiyuFgx8N3eAnHIWwg30SP6VPDiWUilIsAsQEYarYneMPpJDBA7EsuK3grhvQzC%2FXsvolNwdx6DnWHDf578WN7ydfch97aXjJW6sgk0ieNI%2FWNo6xMTDFKC%2Bz5f%2Fn%2By0RhauS0edil2GQkT81AtlkqOydh13bUJeh3Ybtog9wTESzcrjzMeBj78c2cpTJvHjFpA5Fw4d7X9E%2FuPQoO9kKjqWQ%3D%3D&format=json","host":["{{baseUrl}}"],"path":["login","saml","ZGVtfHxkZW1vZ3Vlc3QuY29t"],"query":[{"key":"SAMLRequest","value":"fZJbbxoxEEb%2Fysrvu7b3AqwFSDSoDVKS0kCJwpvjHRKrvhCPl6b%2Fvs7SSulDeR3PGX9n7ClKa45i0ccXdw%2BvPWDM3qxxKIaDGemDE16iRuGkBRRRic3i9kaUBRPH4KNX3pAPyGVCIkKI2juSrZYzIhuo2lHb5KqrurxW3TiftNUkn4wZtKqBugFGsh0ETMiMpAmJQ%2Bxh5TBKF1OJlXXOWc7HW84FH4maFYzXe5Itk4p2Mg7kS4xHFJS%2BygJVkPbJgO4K5S2VR01PnBr%2FrB19F6D7L7t4uH77sX%2Fgp321M6r61j%2BWbSTZ%2Bo%2FvJ%2B067Z4vqz6dm1Bcb7frfP11syXZ4q%2F%2BlXfYWwgbCCet4Pv9zTljilhWRVsXLS%2F4qBQNY5wieioVkvn0PZ8YFhDmF9stRNnJKKf0IzI9P%2FZdyrparr3R6lf22Qcr4%2F9V0uChorv8MLQKsFKbRdcFQExKxvifVwFkhBk5SINA6Px87b%2Ffav4b"},{"key":"SigAlg","value":"http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha512"},{"key":"Signature","value":"uw9h%2FU8KXTJbHt2LLpH33LJhs8D1enuO1966zbAEFUASZRu4zWXnfU2AR2SzUGhD4%2Fu2flxQo9ladF8CQ1hFz8rBhn8WSmHsfFgcSoibwLiH3CgKf0FcIvTMtMp2YtiyuFgx8N3eAnHIWwg30SP6VPDiWUilIsAsQEYarYneMPpJDBA7EsuK3grhvQzC%2FXsvolNwdx6DnWHDf578WN7ydfch97aXjJW6sgk0ieNI%2FWNo6xMTDFKC%2Bz5f%2Fn%2By0RhauS0edil2GQkT81AtlkqOydh13bUJeh3Ybtog9wTESzcrjzMeBj78c2cpTJvHjFpA5Fw4d7X9E%2FuPQoO9kKjqWQ%3D%3D"},{"key":"format","value":"json"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 23 Oct 2024 05:15:26 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"833"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"e1c5522f-96e5-434c-8454-a680b3ceb1fb"},{"key":"access-control-allow-origin","value":"*"},{"key":"x-amzn-Remapped-Content-Length","value":"833"},{"key":"x-amzn-Remapped-Connection","value":"keep-alive"},{"key":"x-amz-apigw-id","value":"AFnxQGpRoAMFegA="},{"key":"x-amzn-Remapped-Date","value":"Wed, 23 Oct 2024 05:15:26 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"qid\": \"1ab2e09c-164b-4a0e-a801-3568435d320b\",\n    \"did\": \"YXXWGZ\",\n    \"code\": \"dem\",\n    \"orgName\": \"dem\",\n    \"didEnabled\": true,\n    \"source\": \"SAML\",\n    \"appName\": \"HR Portal\",\n    \"url\": \"wss://wsp.qa.scrambleid.com/v1\",\n    \"idTimeout\": 60,\n    \"browserTimeout\": 900,\n    \"confirmationTimeout\": 60,\n    \"redirectUrl\": \"https://demoguest.com/qa/hr\",\n    \"webAuthnEnabled\": true,\n    \"webAuthnRegisterUrl\": \"/register/webauthn/ZGVtfHxkZW1vZ3Vlc3QuY29t\",\n    \"forceAuthnEnabled\": true,\n    \"org\": {\n        \"name\": \"dem\",\n        \"color\": \"#005A8C\",\n        \"logo\": \"https://logos.qa.scrambleid.com/logos/dem.png\",\n        \"logoSize\": {\n            \"width\": 275,\n            \"height\": 69.75\n        },\n        \"title\": \"\",\n        \"bannerText\": \"We eliminate your greatest weakness: static credentials. All of them. There is nothing to store, nothing to steal.\"\n    },\n    \"disallowMultiValuedAttributes\": false,\n    \"webAuthnRoamingAuthenticatorEnabled\": true,\n    \"webAuthnRegistrationEnabled\": true,\n    \"tapToLoginForWindowsEnabled\": false\n}"}],"_postman_id":"e8912e3a-dbe4-4a5b-b76d-36f6093bd207"},{"name":"Step 2 - Verify QID (Login) Test","id":"75aa0a51-bbc5-4be6-b632-d28a05a69768","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"uniqueId\": \"{{uinqueid}}\",\r\n    \"suid\": \"{{suid}}\",\r\n    \"zid\": \"{{zid}}\",\r\n    \"org\": \"orgCode\",\r\n    \"timestamp\": 1780211003,\r\n    \"signature\": \"{{signature}}\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/verify/did","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["verify","did"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"177c616c-cede-4b5f-8b20-0956d1473158","name":"Step 3 - Verify DID (Login) Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"uniqueId\": \"{{uinqueid}}\",\r\n    \"suid\": \"{{suid}}\",\r\n    \"zid\": \"{{zid}}\",\r\n    \"timestamp\": 1780211003,\r\n    \"signature\": \"{{signature}}\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/verify/did"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 23 Oct 2024 05:12:21 GMT","uuid":"e59ff82f-727d-4a77-b442-41923f76d11f"},{"key":"Content-Type","value":"application/json; charset=utf-8","uuid":"221c8f10-3a08-4c71-9cac-80869394fa81"},{"key":"Content-Length","value":"56","uuid":"2acdd6af-9be5-4da7-b0a4-69d1e8dc29e6"},{"key":"Connection","value":"keep-alive","uuid":"6fcf5ef2-d827-466b-bec4-268d3f0155bd"},{"key":"x-amzn-RequestId","value":"004ebf3f-20e4-426d-9f09-f7fe490f3059","uuid":"3299df75-2eee-4105-8f6f-f9453d69e176"},{"key":"access-control-allow-origin","value":"*","uuid":"4b117359-15f9-45bc-911d-0f641f2148cb"},{"key":"x-amzn-Remapped-Content-Length","value":"56","uuid":"8c36f3da-4545-4477-87a6-d996570d01df"},{"key":"x-amzn-Remapped-Connection","value":"keep-alive","uuid":"86b68f59-3349-49e8-9299-c5607d772fda"},{"key":"x-amz-apigw-id","value":"AFnUaGInIAMF3BA=","uuid":"e845c29e-1c01-484d-9ff5-c9b2e3860406"},{"key":"x-amzn-Remapped-Date","value":"Wed, 23 Oct 2024 05:12:21 GMT","uuid":"02470a04-2454-4352-9c64-0e343b47d4cc"}],"cookie":[],"responseTime":null,"body":"{\n    \"resultCode\": 0,\n    \"errorCode\": 0,\n    \"timestamp\": 1729660341745\n}"}],"_postman_id":"75aa0a51-bbc5-4be6-b632-d28a05a69768"}],"id":"2c1f8815-3457-46b8-ad7c-3467ad8857ad","_postman_id":"2c1f8815-3457-46b8-ad7c-3467ad8857ad","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}}}],"id":"57079219-723d-4a5a-8101-21fef21d0485","description":"<ul>\n<li><p>Authentication begins with a call to the login page to obtain the DID or QID values.</p>\n</li>\n<li><p>Step 2 involves the HTTP call that completes the login process. This step requires a specific signature, and the proper format must be followed to generate the signature using the private key.</p>\n</li>\n</ul>\n","_postman_id":"57079219-723d-4a5a-8101-21fef21d0485","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}}},{"name":"Bot Operations","item":[{"name":"Get Bot","id":"6505f472-f3d7-48e9-83cd-5735431197c2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"x-org","value":"orgCode"}],"url":"{{baseUrl}}/scim/v2/users/:id","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["scim","v2","users",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","value":"","key":"id"}]}},"response":[{"id":"f087650e-af5f-4aa6-aa0b-9d8f8d04b23e","name":"Get Bot - success","originalRequest":{"method":"GET","header":[{"key":"x-org","value":"orgCode"}],"url":"{{baseUrl}}/scim/v2/users/bot_demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 17:02:16 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"453"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"a254db1b-5da7-4c32-b7f6-97f13529aff5"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"c3mP3FFNIAMF0-w="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66c61d98-1b3fa8d70c621b6527c82870;Parent=325dfdcdc4403db9;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n    ],\n    \"id\": \"bot_demo\",\n    \"userName\": \"bot_demo\",\n    \"name\": {\n        \"givenName\": \"bot_demo\"\n    },\n    \"scrambleMeta\": {\n        \"registered\": false\n    },\n    \"active\": true,\n    \"groups\": [],\n    \"roles\": [\n        \"USER\"\n    ],\n    \"ldapId\": \"abc123\",\n    \"userType\": \"bot\",\n    \"unixLoginAttribs\": [\n        \"bot_demo\"\n    ],\n    \"managerEmail\": \"test@manager.com\",\n    \"windowsLoginAttribs\": [\n        \"bot_demo\"\n    ],\n    \"meta\": {\n        \"resourceType\": \"User\",\n        \"created\": \"2024-08-21T16:23:05.733Z\",\n        \"lastModified\": \"2024-08-21T16:23:05.733Z\"\n    }\n}"},{"id":"ddf6bb0b-d037-4d09-a89d-559e0eaf1b2b","name":"Get Bot - bot not found","originalRequest":{"method":"GET","header":[{"key":"x-org","value":"orgCode"}],"url":"{{baseUrl}}/scim/v2/users/bot_demo"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 17:10:02 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"98"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"a2e8486a-a6c2-44ce-a435-33d03977fb7c"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"c3nYkFCcoAMFmbw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66c61f69-7913872b6e1e38950fc01e8f;Parent=38ff523df25f7fec;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:api:messages:2.0:Error\"\n    ],\n    \"detail\": \"user not found\",\n    \"status\": 404\n}"}],"_postman_id":"6505f472-f3d7-48e9-83cd-5735431197c2"},{"name":"Delete Bot","id":"3b63acb1-a990-45ed-a187-f006b2d41658","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"content-type":true}},"request":{"method":"DELETE","header":[{"key":"x-org","value":"orgCode"}],"url":"{{baseUrl}}/scim/v2/users/:id","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["scim","v2","users",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"id":"324bc6d2-dd10-4db8-bfb6-2d0f3bb35ea8","type":"any","value":"janedoe","key":"id"}]}},"response":[{"id":"7333c6ef-f3a3-4acf-9f46-22558fe53f3f","name":"Delete Bot - bot deleted","originalRequest":{"method":"DELETE","header":[{"key":"x-org","value":"orgCode"}],"url":"{{baseUrl}}/scim/v2/users/bot_demo"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 17:06:47 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"0d1b327c-bb72-4717-a8b6-8e14f29cbfbf"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"c3m6OGBFoAMFZ6g="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66c61ea7-3f447f046961e2d3311a4dc3;Parent=65040d52ae0dc96c;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":null},{"id":"e43ac9dc-0801-4e75-abe8-a1033c0daa9a","name":"Delete Bot - bot not found","originalRequest":{"method":"DELETE","header":[{"key":"x-org","value":"orgCode"}],"url":"{{baseUrl}}/scim/v2/users/bot_demo"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 17:07:54 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"98"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"56a7967c-c0f7-4868-aacb-69e07b4100b6"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"c3nEnHEBoAMFfcQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66c61eea-598f575279e6e4b2512a492c;Parent=484ffaa708500d66;Sampled=0;lineage=09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:api:messages:2.0:Error\"\n    ],\n    \"detail\": \"user not found\",\n    \"status\": 404\n}"}],"_postman_id":"3b63acb1-a990-45ed-a187-f006b2d41658"},{"name":"Update Bot","id":"cd5f2368-73bf-463c-b044-db254e20d668","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"x-org","value":"orgCode"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"userName\": \"bot_demo\",\n    \"managerEmail\":\"test+updated@manager.com\"\n}"},"url":"{{baseUrl}}/scim/v2/users/bot_demo","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["scim","v2","users","bot_demo"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"2707ad74-6e0c-406b-85d1-97e96ad706f6","name":"Update Bot - Success","originalRequest":{"method":"PUT","header":[{"key":"x-org","value":"orgCode"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"userName\": \"bot_demo\",\n    \"managerEmail\":\"test+updated@manager.com\"\n}"},"url":"{{baseUrl}}/scim/v2/users/bot_demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 11 Sep 2024 14:38:10 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"443"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"6ba06b63-19b8-4adf-a72a-516e4a22ab45"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"d8e07GgroAMF2qA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66e1ab52-7b864fe42f45205434e491b7;Parent=429d8d7ee9dfd058;Sampled=0;lineage=1:09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\"\n    ],\n    \"id\": \"bot_demo\",\n    \"userName\": \"bot_demo\",\n    \"name\": {\n        \"givenName\": \"bot_demo\"\n    },\n    \"scrambleMeta\": {\n        \"registered\": false\n    },\n    \"active\": true,\n    \"groups\": [],\n    \"roles\": [\n        \"USER\"\n    ],\n    \"managerEmail\": \"test+updated@manager.com\",\n    \"userType\": \"bot\",\n    \"unixLoginAttribs\": [\n        \"bot_demo\"\n    ],\n    \"windowsLoginAttribs\": [\n        \"bot_demo\"\n    ],\n    \"meta\": {\n        \"resourceType\": \"User\",\n        \"created\": \"2024-09-11T14:35:19.183Z\",\n        \"lastModified\": \"2024-09-11T14:38:10.552Z\"\n    }\n}"}],"_postman_id":"cd5f2368-73bf-463c-b044-db254e20d668"},{"name":"Patch Bot","id":"b8e66251-1da5-42bc-8263-2c064c3caeb2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"x-org","value":"orgCode"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operations\": [\n    {\n      \"op\": \"replace\",\n      \"path\": \"managerEmail\",\n      \"value\": \"test+patched@manager.com\"\n    }\n  ]\n}"},"url":"{{baseUrl}}/scim/v2/users/bot_demo","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}},"urlObject":{"path":["scim","v2","users","bot_demo"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"d24aec65-9e5e-430e-8e49-d61a3d02a274","name":"Patch Bot - Success","originalRequest":{"method":"PATCH","header":[{"key":"x-org","value":"orgCode"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operations\": [\n    {\n      \"op\": \"replace\",\n      \"path\": \"managerEmail\",\n      \"value\": \"test+patched@manager.com\"\n    }\n  ]\n}"},"url":"{{baseUrl}}/scim/v2/users/bot_demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 11 Sep 2024 14:45:53 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"204"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"5f31bfde-d46a-4ac0-b72b-c2a0a5260ad9"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-headers","value":"Content-Type, Origin, Authorization"},{"key":"x-amz-apigw-id","value":"d8f9TEniIAMFbeQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66e1ad21-478ad5ce771a900d26418aa1;Parent=378f99874c38fc88;Sampled=0;lineage=1:09e8eb60:0"},{"key":"access-control-allow-credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"schemas\": [\n        \"urn:ietf:params:scim:schemas:messages:2.0:PatchOp\"\n    ],\n    \"operations\": [\n        {\n            \"op\": \"replace\",\n            \"path\": \"managerEmail\",\n            \"value\": \"test+patched@manager.com\",\n            \"response\": {\n                \"statusCode\": 201,\n                \"message\": \"Success\"\n            }\n        }\n    ]\n}"}],"_postman_id":"b8e66251-1da5-42bc-8263-2c064c3caeb2"}],"id":"3c807b8d-001f-427a-a0c1-484e1829b572","_postman_id":"3c807b8d-001f-427a-a0c1-484e1829b572","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66","id":"8c6cc3a2-198c-40af-b32f-4428516efc66","name":"Bot Automation","type":"folder"}}}],"id":"8c6cc3a2-198c-40af-b32f-4428516efc66","description":"<p>Contains</p>\n<ul>\n<li><p>Bot Account creation</p>\n</li>\n<li><p>Bot Registration</p>\n</li>\n<li><p>Bot Authentication</p>\n</li>\n<li><p>Bot Operations</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"930ce517-05a2-4f82-869f-fa9df6d4338b","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"d9682974-5b95-44cf-940d-f17a806bd92a","type":"text/javascript","packages":{},"exec":[""]}}],"_postman_id":"8c6cc3a2-198c-40af-b32f-4428516efc66"}],"event":[{"listen":"prerequest","script":{"id":"35e83b93-d20a-4121-962e-b75203a4d77a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"f980dc9b-21dc-467f-ae2d-e17098d2a8ed","type":"text/javascript","exec":[""]}}],"variable":[{"key":"scimUsername","value":"","type":"string"},{"key":"scimPassword","value":"","type":"string"},{"key":"orgCode","value":"orgCode","type":"string"},{"key":"userName","value":"jubinj","type":"string"},{"key":"auditUsername","value":"","type":"string"},{"key":"auditPassword","value":"","type":"string"},{"key":"id","value":"janedoe","type":"string"}]}