{
  "basePath": "/",
  "info": {
    "title": "Federated Directory API Documentation",
    "version": "0.9.1"
  },
  "host": "api.federated.directory",
  "schemes": [
    "https"
  ],
  "securityDefinitions": {
    "jwt": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "jwt": []
    }
  ],
  "tags": [
    {
      "name": "Users",
      "description": "<llm-exclude>\n\n\n\n</llm-exclude>\n\n# Users API\n\nOur fully [SCIM 2.0](http://www.simplecloud.info) compliant API to create, search, retrieve, update and remove user information.\n\n> **Info**\nAll API calls require a valid token. See how to [obtain a token](/developer/api-reference#tag/oauth2).\n\n\n## User Data Model\n\nThe User resource in Federated Directory is composed of three schemas:\n1. **Core User**: `urn:ietf:params:scim:schemas:core:2.0:User`\n2. **Enterprise Extension**: `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User`\n3. **FD Extension**: `urn:ietf:params:scim:schemas:extension:fd:2.0:User`\n\nTechnical details for all attributes (types, constraints, and descriptions) are available in the interactive sections below."
    },
    {
      "name": "Groups",
      "description": "Group management endpoints"
    },
    {
      "name": "MCP",
      "description": "The Federated Directory MCP lets developers and administrators expose **contact and organizational data** to MCP-compatible clients, such as internal assistants, AI agents, and workflow tools.\n\nIt implements the [MCP standard](https://modelcontextprotocol.io) using JSON-RPC 2.0, which means any MCP-compatible client — such as Claude, ChatGPT, Cursor, or a custom agent — can connect and start working with your directory data right away.\n\n**MCP Endpoint:** `https://api.federated.directory/v2/mcp`\n\n## Use cases\n\n### End-user experiences\n\nUse the MCP to power assistants or internal applications that help employees:\n\n- find colleagues by name, department, or title,\n- identify who someone's manager is, or visualize their full management chain,\n- browse available departments, divisions, or titles.\n\n### Agentic workflows\n\nUse the MCP when an agent needs **structured, verified data** from Federated Directory instead of relying on free text or assumptions. Typical patterns:\n\n- search for a person based on context in a conversation,\n- resolve a contact by ID after a search result is selected,\n- list real department or title values before making a routing or assignment decision,\n- ground a multi-step workflow with verified identity and org data.\n\nA reliable agent workflow typically looks like this:\n\n1. search contacts based on available context,\n2. identify or confirm the right person,\n3. retrieve the full contact by ID,\n4. use organizational values to validate or continue the workflow.\n\nAgents can also walk the org chart directly — for example, to find out who a contact reports to, or how many people report to them — using the manager chain tool described below.\n\n## Capabilities\n\nThe MCP exposes four tools and a set of read-only resources.\n\n### Search contacts\n\nSearch for people using one or more criteria, combined in a single request. Supports filtering by name, email, department, division, title, manager, employee number, and tenant-configured custom fields. Match operators include exact (`eq`), contains (`co`), and starts with (`sw`).\n\n### Get contact by ID\n\nRetrieve a single contact by their Federated Directory user ID. Use this after a search to fetch the exact fields your workflow needs.\n\n### List organizational values\n\nList distinct values for fields such as department, division, title, company, and custom fields. Useful for validating input or giving agents a grounded list of real values to reason over.\n\n### Get manager chain (org chart)\n\nRetrieve the management chain for a contact — the path from the root manager down to their direct manager, optionally including the contact themselves. This is powered by the same organizational chart data available in the [Users API](/developer/users-api) via the `managerChain` attribute.\n\nIn MCP Apps-capable hosts (Claude Desktop, ChatGPT, VS Code, Goose, Postman), this tool also renders an **interactive org chart widget** inline in the conversation — a sandboxed HTML view of the management chain — instead of just a text response. Hosts that don't support MCP Apps still get a plain structured/text result, so the tool works everywhere; the interactive chart is a bonus in supporting clients.\n\nIf access control limits how much of the chain a caller is allowed to see (based on the groups and shared attributes the caller has access to, whether through an API key or an authenticated user session), the result indicates that the chain was truncated rather than exposing managers outside the caller's visibility.\n\n### Resources\n\nThe MCP also exposes read-only resources for organizational reference data such as departments, divisions, companies, and titles. Tenants with custom labels will have those surfaced as additional dynamic resources.\n\nIn addition, MCP Apps-capable hosts can read a `ui://org-chart` resource — the self-contained HTML app used to render the interactive org chart for the **Get manager chain** tool. Hosts without MCP Apps support simply ignore this resource.\n\nFor the full list of supported fields, attributes, and request/response schemas, see the [API reference](/developer/api-reference#tag/mcp).\n\n## Setup\n\nFor step-by-step setup instructions — creating a group, generating an API key, and configuring your MCP client — see the [full MCP guide](/mcp#setup)."
    },
    {
      "name": "OAuth2",
      "description": "<llm-exclude>\n\n\n\n</llm-exclude>\n\n# Obtaining a token\n\nAny service or application that wants to integrate with the Federated Directory APIs needs to obtain an access token. This access token should be placed in the `Authorization` header of every API call as a Bearer token. Like this:\n\n    Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\n\n## Audiences and roles\n\nThe combination of an audience (aud) and a role describe the authorizations of an access token.\n\nAn audience basically says for what kind of user the access token was created.\n\n| Audience | Description                                                                                                                                                                     |\n| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| User     | A user represents a person and is contained in a user directory. It's main purpose is for the usage of the platform by a person.                                                |\n| Key      | A key is not linked to a natural person and is mainly intended for system integration. There are two kind of keys: a directory key and a admin key. Both have a different role. |\n\nA role determines the authorizations given to an access token.\n\n| Role         | Description                                                                                                                                                                                                                        |\n| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| User         | Is not able to make changes to any other user in or the configuration in its company                                                                                                                                               |\n| directoryKey | Always a key (audience) that has admin permissions on one specific directory in your Federated Directory. Ideal for integration with your current corporate address book or IAM solution (like Entra ID, Google Directory or Okta) |\n| admin        | Full administrative permissions. Can modify all users and settings in its company                                                                                                                                                  |\n| read         | A dedicated, read-only scope automatically issued to sessions created through the OAuth 2.0 authorization-code flow (i.e. when a user connects an [Application](/administrator/integrations#applications-oauth-2-0) via the \"Sign in\" consent screen), regardless of that user's actual role. It is intentionally restricted to a small set of read-only endpoints — currently `GET /v2/Users` and the [MCP](/mcp) endpoint (`POST /v2/mcp`) — and can never grant `admin`-level access. |\n\n## Retrieve an access token with a key\n\nThere are two sort of keys.\n\n1. **Directory key** (role = directoryKey) — scoped to a single directory. Create one via [Directory keys](/administrator/directories#directory-keys).\n2. **API key** (role = admin) — has administrator permissions across your whole tenant. Create one via [Integrations](/administrator/integrations).\n\nDecide which key is appropriate for your integration scenario, then create it in the admin UI using the links above.\n\nA directory key returns three things: `issuer`, `private key`, and an `access token` (returned only once, directly after creation — keep it secure). An API key returns just `issuer` and `private key`.\n\nThe `issuer` and `private key` of either key type can be used to **create access tokens** (see below). These tokens have the\nsame lifetime as a user session. This is [configurable per tenant](/administrator/company)\nbut has a default value of 480 minutes (8 hours).\n\n## Create an access token with the issuer and private key\n\nPlace the 'issuer' value of your key in the below JSON.\n\n```json\n{\n  \"iss\": \"<issuer>\",\n  \"scope\": [\"directoryKey\"], // [\"admin\"] if this is the API key and not Directory key\n  \"aud\": \"key\"\n}\n```\n\nUse RS256 encryption to create and parse a JWT token. Use your 'private key' for this.\nThere are a [a lot of libraries](https://jwt.io/libraries) available that can do this.\n\nThis JWT can then be submitted by a POST action to this end-point :"
    },
    {
      "name": "SCIM",
      "description": "Standard SCIM metadata endpoints"
    }
  ],
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "summary": "API Discovery Root",
        "operationId": "get",
        "description": "Returns the SCIM service provider configuration from the root path",
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/ServiceProviderConfig"
            },
            "description": "Success"
          }
        }
      }
    },
    "/.well-known/oauth-authorization-server": {
      "get": {
        "summary": "OAuth 2.0 Authorization Server Metadata",
        "operationId": "getWellknownOauthauthorizationserver",
        "description": "Returns metadata for OAuth 2.0 authorization server discovery (RFC 8414).",
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource": {
      "get": {
        "summary": "OAuth 2.0 Protected Resource Metadata",
        "operationId": "getWellknownOauthprotectedresource",
        "description": "Returns metadata for OAuth 2.0 discovery (RFC 8707). This allows clients to discover how to authenticate with this specific resource.",
        "tags": [
          "MCP"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OauthProtectedResourceMetadata"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/ServiceProviderConfig": {
      "get": {
        "summary": "Get Service Provider Config",
        "operationId": "getV2Serviceproviderconfig",
        "description": "Returns the SCIM service provider configuration",
        "tags": [
          "SCIM"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/ServiceProviderConfig"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/mcp": {
      "get": {
        "summary": "MCP Endpoint - GET Not Supported",
        "operationId": "getV2Mcp",
        "description": "This endpoint only supports POST requests for JSON-RPC 2.0 MCP calls. GET requests are not supported as this server does not implement SSE (Server-Sent Events) streaming. Per RFC 7231, returns 405 Method Not Allowed with Allow header listing permitted methods.",
        "tags": [
          "MCP"
        ],
        "responses": {
          "405": {
            "description": "Method Not Allowed - Use POST instead"
          }
        }
      },
      "post": {
        "summary": "MCP JSON-RPC Endpoint - Multi-method Model Context Protocol handler",
        "operationId": "postV2Mcp",
        "description": "Handles Model Context Protocol (MCP) JSON-RPC 2.0 requests. \n\n### Supported MCP Methods\n- **initialize**: Initial handshake to exchange version and capabilities.\n- **tools/list**: List available tools for the current user/company.\n- **tools/call**: Execute a specific search or retrieval tool.\n- **ping**: Simple connectivity and availability check.\n\n### Supported Tools Reference\n| Tool Name | Description | Required Arguments |\n|:---|:---|:---|\n| `search_contacts` | Search contacts by one or more AND-ed criteria (name, email, department, division, company, title, manager, employeeNumber, custom01-03) | `criteria` |\n| `get_contact_by_id` | Retrieve a specific contact by their unique ID | `id` |\n| `list_values` | List distinct values for a field (department, division, company, title, custom01-03) | `field` |\n\n### Optional `attributes` Parameter\n`search_contacts` and `get_contact_by_id` accept an optional `attributes` array to control which fields are returned.\n\n- **`get_contact_by_id`**: if omitted, all attributes the requester is permitted to see are returned (full SCIM user object).\n- **`search_contacts`**: if omitted, a compact default shape is returned: `id`, `displayName`, `firstName`, `lastName`, `email`, `profileUrl`, `avatarUrl` (primary photo), `active`.\n\nValid values: `id`, `displayName`, `userName`, `externalId`, `firstName`, `lastName`, `nickName`, `profileUrl`, `emails`, `addresses`, `phoneNumbers`, `photos`, `userType`, `title`, `preferredLanguage`, `locale`, `roles`, `timezone`, `active`, `meta`, `groups`, `employeeNumber`, `costCenter`, `organization`, `division`, `department`, `manager`, `description`, `companyId`, `companyLogos`, `directoryId`, `chatMethods`, `directReportCount`, `custom01`, `custom02`, `custom03`.\n\n*All search tools also support an optional `limit` (1–100, default 10) and `offset` parameter for pagination.*",
        "parameters": [
          {
            "x-alternatives": [
              {
                "$ref": "#/x-alt-definitions/McpCallToolRequest"
              },
              {
                "$ref": "#/x-alt-definitions/McpListToolsRequest"
              },
              {
                "$ref": "#/x-alt-definitions/McpInitializeRequest"
              },
              {
                "$ref": "#/x-alt-definitions/McpPingRequest"
              },
              {
                "$ref": "#/x-alt-definitions/JsonRpcRequest"
              },
              {
                "$ref": "#/x-alt-definitions/JsonRpcBatchRequest"
              }
            ],
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/McpCallToolRequest"
            }
          }
        ],
        "tags": [
          "MCP"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/JsonRpcResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/me": {
      "get": {
        "summary": "Get the current user",
        "operationId": "getV2Me",
        "description": "Returns the SCIM representation of the currently authenticated user",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/UserResponse",
              "x-alternatives": [
                {
                  "$ref": "#/x-alt-definitions/UserResponse"
                },
                {
                  "$ref": "#/x-alt-definitions/ScimError"
                }
              ]
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/Groups/{id}": {
      "get": {
        "summary": "Get a group or list of groups",
        "operationId": "getV2GroupsId",
        "description": "Returns a single group when an ID is provided, or a ListResponse when no ID is given. ListResponse shape: { schemas, totalResults, startIndex, itemsPerPage, Resources: [Group] }. Filtering is supported on list requests via the filter query parameter; only the displayName attribute is supported (eq and co operators).",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path"
          },
          {
            "type": "string",
            "minLength": 0,
            "maxLength": 500,
            "name": "filter",
            "in": "query"
          },
          {
            "type": "number",
            "minimum": 1,
            "x-constraint": {
              "precision": 0
            },
            "name": "startIndex",
            "in": "query"
          },
          {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "x-constraint": {
              "precision": 0
            },
            "name": "count",
            "in": "query"
          },
          {
            "type": "string",
            "enum": [
              "displayName",
              "created",
              "lastModified"
            ],
            "name": "sortBy",
            "in": "query"
          },
          {
            "type": "string",
            "enum": [
              "ascending",
              "descending"
            ],
            "name": "sortOrder",
            "in": "query"
          }
        ],
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/GroupListResponse"
            },
            "description": "Success - Returns a single GroupResponse when id is provided, or a GroupListResponse when id is omitted"
          }
        }
      },
      "delete": {
        "summary": "Delete a group",
        "operationId": "deleteV2GroupsId",
        "description": "Deletes a group by ID",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "tags": [
          "Groups"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "patch": {
        "summary": "Update a group",
        "operationId": "patchV2GroupsId",
        "description": "Updates a group resource using SCIM patch operations",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/PatchGroupRequest"
            }
          }
        ],
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/GroupResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/ResourceTypes/{resourceType}": {
      "get": {
        "summary": "Get SCIM Resource Types",
        "operationId": "getV2ResourcetypesResourcetype",
        "description": "Returns the SCIM resource types supported by the API",
        "tags": [
          "SCIM"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/ResourceTypeListResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/Schemas/{schema}": {
      "get": {
        "summary": "Get SCIM Schemas",
        "operationId": "getV2SchemasSchema",
        "description": "Returns the SCIM schemas supported by the API",
        "tags": [
          "SCIM"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/SchemaListResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/Users/{id}": {
      "get": {
        "summary": "Get a user or list of users",
        "operationId": "getV2UsersId",
        "description": "Returns a user by ID or a list of users based on SCIM filtering. Supports optional attributes parameter to request specific fields. When no ID is provided, returns a ListResponse with totalResults, startIndex, itemsPerPage, and a Resources array. Maximum page size (count) is 50 for admin and user scope; directoryKey callers may use up to 1000. Opt-in fields for single-user GET only: `urn:ietf:params:scim:schemas:extension:fd:2.0:User:managerChain` returns the management hierarchy as `{ items, truncated }` (root first, direct manager last; access-controlled per sharedAttributes). `urn:ietf:params:scim:schemas:extension:fd:2.0:User:directReportCount` returns the number of direct reports.",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path"
          },
          {
            "type": "string",
            "minLength": 0,
            "maxLength": 500,
            "name": "filter",
            "in": "query"
          },
          {
            "type": "string",
            "name": "attributes",
            "in": "query"
          },
          {
            "type": "string",
            "enum": [
              "displayName",
              "title",
              "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.division",
              "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.department",
              "urn:ietf:params:scim:schemas:extension:fd:2.0:User:companyId",
              "urn:ietf:params:scim:schemas:extension:fd:2.0:User:directoryId",
              "urn:ietf:params:scim:schemas:extension:fd:2.0:User:groupOwner"
            ],
            "name": "sortBy",
            "in": "query"
          },
          {
            "type": "string",
            "enum": [
              "ascending",
              "descending"
            ],
            "name": "sortOrder",
            "in": "query"
          },
          {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "x-constraint": {
              "precision": 0
            },
            "name": "count",
            "in": "query"
          },
          {
            "type": "number",
            "minimum": 1,
            "x-constraint": {
              "precision": 0
            },
            "name": "startIndex",
            "in": "query"
          }
        ],
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/UserResponse",
              "x-alternatives": [
                {
                  "$ref": "#/x-alt-definitions/UserResponse"
                },
                {
                  "$ref": "#/x-alt-definitions/ScimError"
                }
              ]
            },
            "description": "Success - Returns a single user when id is provided, or a ListResponse when id is omitted. ListResponse shape: { schemas, totalResults, startIndex, itemsPerPage, Resources: [User] }"
          }
        }
      },
      "delete": {
        "summary": "Delete a user",
        "operationId": "deleteV2UsersId",
        "description": "Deletes a user by ID",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "tags": [
          "Users"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "put": {
        "summary": "Replace a user",
        "operationId": "putV2UsersId",
        "description": "Replaces a user resource with the provided SCIM data",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/UpdateUserRequest"
            }
          }
        ],
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/UserResponse",
              "x-alternatives": [
                {
                  "$ref": "#/x-alt-definitions/UserResponse"
                },
                {
                  "$ref": "#/x-alt-definitions/ScimError"
                }
              ]
            },
            "description": "Success"
          }
        }
      },
      "patch": {
        "summary": "Update a user",
        "operationId": "patchV2UsersId",
        "description": "Updates a user resource using SCIM patch operations",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/PatchUserRequest"
            }
          }
        ],
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/UserResponse",
              "x-alternatives": [
                {
                  "$ref": "#/x-alt-definitions/UserResponse"
                },
                {
                  "$ref": "#/x-alt-definitions/ScimError"
                }
              ]
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/oauth/authorizations": {
      "get": {
        "summary": "List the active OAuth authorizations of the requester",
        "operationId": "getV2OauthAuthorizations",
        "description": "Returns every OAuth client the requester currently has an active grant for (grantedAt, lastUsedAt, scope).",
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OAuthAuthorizationList"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/oauth/clients": {
      "get": {
        "summary": "List OAuth clients available to this company",
        "operationId": "getV2OauthClients",
        "description": "Returns standard platform clients and the company's own custom clients. Used by the group-creation client picker and the admin Integrations page.",
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OAuthClientListItemArray"
            },
            "description": "Success"
          }
        }
      },
      "post": {
        "summary": "Create a custom OAuth client",
        "operationId": "postV2OauthClients",
        "description": "Creates a new OAuth client owned by the admin's company. clientId is generated by the server and returned in the response.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/OAuthClientWrite"
            }
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "201": {
            "schema": {
              "$ref": "#/definitions/OAuthClientSummary"
            },
            "description": "Created"
          }
        }
      }
    },
    "/v2/Login/Oauth2/Authorize": {
      "get": {
        "summary": "OAuth 2.0 Authorization Endpoint",
        "operationId": "getV2LoginOauth2Authorize",
        "description": "Validates the authorization request (client_id, redirect_uri, PKCE params) and redirects the browser to the Federated Directory consent screen.",
        "parameters": [
          {
            "type": "string",
            "enum": [
              "code"
            ],
            "name": "response_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "client_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "x-format": {
              "uri": true
            },
            "name": "redirect_uri",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "state",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "scope",
            "in": "query"
          },
          {
            "type": "string",
            "name": "code_challenge",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "enum": [
              "S256"
            ],
            "name": "code_challenge_method",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "x-format": {
              "uri": true
            },
            "name": "resource",
            "in": "query",
            "required": false
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      },
      "post": {
        "summary": "OAuth 2.0 consent decision",
        "operationId": "postV2LoginOauth2Authorize",
        "description": "Accepts or denies a pending authorization request. On approval, resolves the groups this client may access (intersection of the user's groups and groups that opted this client in via allowedOAuthClients) and issues a short-lived authorization code.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/OAuthAuthorizeDecision"
            }
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OAuthAuthorizeDecisionResponse"
            },
            "description": "Success"
          },
          "409": {
            "description": "No group has opted this client in (client_not_permitted)"
          }
        }
      }
    },
    "/v2/oauth/clients/{clientId}": {
      "get": {
        "summary": "Get a single OAuth client by clientId",
        "operationId": "getV2OauthClientsClientid",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "clientId",
            "in": "path",
            "required": true
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OAuthClientSummary"
            },
            "description": "Success. Owning-company admins get the full OAuthClientSummary shape; every other authenticated requester gets the reduced OAuthClientConsent shape."
          }
        }
      }
    },
    "/v2/Bulk": {
      "post": {
        "summary": "Bulk User operations",
        "operationId": "postV2Bulk",
        "description": "Allows multiple SCIM User operations (create, update, delete) in a single request. Per RFC 7644, bulkId is required for POST operations and optional for all other methods. DELETE operations resolve the target user from the path (/Users/{id}) or, for backwards compatibility, from data.id if the path does not contain a valid ID.",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/BulkRequest"
            }
          }
        ],
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/BulkResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/Groups": {
      "post": {
        "summary": "Create a new group",
        "operationId": "postV2Groups",
        "description": "Creates a new group in the directory using SCIM format",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CreateGroupRequest"
            }
          }
        ],
        "tags": [
          "Groups"
        ],
        "responses": {
          "201": {
            "schema": {
              "$ref": "#/definitions/GroupResponse"
            },
            "description": "Created"
          }
        }
      }
    },
    "/v2/Users": {
      "post": {
        "summary": "Create a new user",
        "operationId": "postV2Users",
        "description": "Creates a new user in the directory using SCIM format",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CreateUserRequest"
            }
          }
        ],
        "tags": [
          "Users"
        ],
        "responses": {
          "201": {
            "schema": {
              "$ref": "#/definitions/UserResponse",
              "x-alternatives": [
                {
                  "$ref": "#/x-alt-definitions/UserResponse"
                },
                {
                  "$ref": "#/x-alt-definitions/ScimError"
                }
              ]
            },
            "description": "Created"
          }
        }
      }
    },
    "/v2/Login/Oauth2/Token": {
      "post": {
        "summary": "Get Access Token",
        "operationId": "postV2LoginOauth2Token",
        "description": "Exchanges credentials for an OAuth 2.0 access token. Supports three grant types: the JWT-bearer grant (RFC 7523, for API keys), the authorization_code grant with PKCE (RFC 6749 + RFC 7636, for third-party OAuth clients like Microsoft 365 Copilot), and refresh_token (rotating, single-use).",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/OAuth2TokenRequest"
            }
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OAuth2TokenResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/oauth/authorizations/{clientId}": {
      "delete": {
        "summary": "Revoke the OAuth authorization owned by the requester",
        "operationId": "deleteV2OauthAuthorizationsClientid",
        "description": "Deletes the grant (cascading to its refresh tokens) and any active sessions for this user+client, ending access immediately. Writes an audit log entry.",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "clientId",
            "in": "path",
            "required": true
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "204": {
            "description": "Revoked"
          },
          "404": {
            "description": "No active authorization found for this client"
          }
        }
      }
    },
    "/v2/oauth/clients/{id}": {
      "delete": {
        "summary": "Delete a custom OAuth client",
        "operationId": "deleteV2OauthClientsId",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      },
      "put": {
        "summary": "Update a custom OAuth client",
        "operationId": "putV2OauthClientsId",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/OAuthClientUpdate"
            }
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/OAuthClientSummary"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/Groups/{id}/Logo": {
      "put": {
        "summary": "Update group logo",
        "operationId": "putV2GroupsIdLogo",
        "description": "Updates the logo for a group",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/GroupLogoPayload"
            }
          }
        ],
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/GroupResponse"
            },
            "description": "Success"
          }
        }
      }
    },
    "/v2/oauth/clients/{id}/Logo": {
      "put": {
        "summary": "Upload a logo for a custom OAuth client",
        "operationId": "putV2OauthClientsIdLogo",
        "parameters": [
          {
            "type": "string",
            "x-format": {
              "guid": true
            },
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/Model7"
            }
          }
        ],
        "tags": [
          "OAuth2"
        ],
        "responses": {
          "default": {
            "schema": {
              "type": "string"
            },
            "description": "Successful"
          }
        }
      }
    }
  },
  "definitions": {
    "ServiceProviderConfigSchemas": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "ServiceProviderConfigPatch": {
      "type": "object",
      "properties": {
        "supported": {
          "type": "boolean"
        }
      }
    },
    "ServiceProviderConfigBulk": {
      "type": "object",
      "properties": {
        "supported": {
          "type": "boolean"
        },
        "maxOperations": {
          "type": "number"
        },
        "maxPayloadSize": {
          "type": "number"
        }
      }
    },
    "ServiceProviderConfigFilter": {
      "type": "object",
      "properties": {
        "supported": {
          "type": "boolean"
        },
        "maxResults": {
          "type": "number"
        }
      }
    },
    "ServiceProviderConfigChangePassword": {
      "type": "object",
      "properties": {
        "supported": {
          "type": "boolean"
        }
      }
    },
    "ServiceProviderConfigSort": {
      "type": "object",
      "properties": {
        "supported": {
          "type": "boolean"
        }
      }
    },
    "ServiceProviderConfigEtag": {
      "type": "object",
      "properties": {
        "supported": {
          "type": "boolean"
        }
      }
    },
    "AuthenticationScheme": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "specUri": {
          "type": "string"
        },
        "documentationUri": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "primary": {
          "type": "boolean"
        }
      }
    },
    "AuthenticationSchemes": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/AuthenticationScheme"
      }
    },
    "ServiceProviderConfigMeta": {
      "type": "object",
      "properties": {
        "location": {
          "type": "string"
        },
        "resourceType": {
          "type": "string"
        },
        "created": {
          "type": "string"
        },
        "lastModified": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "ServiceProviderConfig": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
        ],
        "documentationUri": "https://help.federated.directory/developer/getting-started",
        "patch": {
          "supported": true
        },
        "bulk": {
          "supported": true,
          "maxOperations": 1000,
          "maxPayloadSize": 5242880
        },
        "filter": {
          "supported": true,
          "maxResults": 50
        },
        "changePassword": {
          "supported": true
        },
        "sort": {
          "supported": true
        },
        "etag": {
          "supported": false
        },
        "authenticationSchemes": [
          {
            "name": "OAuth Bearer Token",
            "description": "Authentication scheme using the OAuth Bearer Token Standard",
            "specUri": "http://www.rfc-editor.org/info/rfc6750",
            "documentationUri": "https://help.federated.directory/developer/getting-started",
            "type": "oauthbearertoken",
            "primary": true
          }
        ],
        "meta": {
          "location": "https://api.federated.directory/v2/ServiceProviderConfig",
          "resourceType": "ServiceProviderConfig",
          "created": "2017-03-19T04:56:22Z",
          "lastModified": "2022-10-06T18:41:42.442Z"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/ServiceProviderConfigSchemas"
        },
        "documentationUri": {
          "type": "string"
        },
        "patch": {
          "$ref": "#/definitions/ServiceProviderConfigPatch"
        },
        "bulk": {
          "$ref": "#/definitions/ServiceProviderConfigBulk"
        },
        "filter": {
          "$ref": "#/definitions/ServiceProviderConfigFilter"
        },
        "changePassword": {
          "$ref": "#/definitions/ServiceProviderConfigChangePassword"
        },
        "sort": {
          "$ref": "#/definitions/ServiceProviderConfigSort"
        },
        "etag": {
          "$ref": "#/definitions/ServiceProviderConfigEtag"
        },
        "authenticationSchemes": {
          "$ref": "#/definitions/AuthenticationSchemes"
        },
        "meta": {
          "$ref": "#/definitions/ServiceProviderConfigMeta"
        }
      }
    },
    "authorization_servers": {
      "type": "array",
      "items": {
        "type": "string",
        "x-format": {
          "uri": true
        }
      }
    },
    "bearer_methods_supported": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scopes_supported": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "token_endpoint_auth_methods_supported": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "grant_types_supported": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "OauthProtectedResourceMetadata": {
      "type": "object",
      "example": {
        "resource": "https://api.federated.directory/v2/mcp",
        "authorization_servers": [
          "https://api.federated.directory"
        ],
        "bearer_methods_supported": [
          "header"
        ],
        "scopes_supported": [
          "read"
        ],
        "token_endpoint": "https://api.federated.directory/v2/Login/Oauth2/Token",
        "authorization_endpoint": "https://api.federated.directory/v2/Login/Oauth2/Authorize",
        "token_endpoint_auth_methods_supported": [
          "none"
        ],
        "grant_types_supported": [
          "authorization_code",
          "refresh_token"
        ],
        "api_key_header": "Authorization",
        "api_key_scheme": "Bearer"
      },
      "properties": {
        "resource": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        },
        "authorization_servers": {
          "$ref": "#/definitions/authorization_servers"
        },
        "bearer_methods_supported": {
          "$ref": "#/definitions/bearer_methods_supported"
        },
        "scopes_supported": {
          "$ref": "#/definitions/scopes_supported"
        },
        "token_endpoint": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        },
        "authorization_endpoint": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        },
        "token_endpoint_auth_methods_supported": {
          "$ref": "#/definitions/token_endpoint_auth_methods_supported"
        },
        "grant_types_supported": {
          "$ref": "#/definitions/grant_types_supported"
        },
        "api_key_header": {
          "type": "string"
        },
        "api_key_scheme": {
          "type": "string"
        }
      },
      "required": [
        "resource",
        "authorization_servers",
        "bearer_methods_supported",
        "scopes_supported",
        "token_endpoint",
        "authorization_endpoint",
        "token_endpoint_auth_methods_supported",
        "grant_types_supported",
        "api_key_header",
        "api_key_scheme"
      ]
    },
    "UserSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:scim:schemas:core:1.0",
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User"
      ]
    },
    "UserSchemaUrnsArray": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "items": {
        "$ref": "#/definitions/UserSchemaUrn"
      }
    },
    "UserName": {
      "type": "object",
      "properties": {
        "familyName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "givenName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "formatted": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        }
      }
    },
    "RoleEnum": {
      "type": "string",
      "enum": [
        "user",
        "admin"
      ]
    },
    "UserRole": {
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/RoleEnum"
        },
        "display": {
          "$ref": "#/definitions/RoleEnum"
        }
      }
    },
    "UserRolesArray": {
      "type": "array",
      "maxItems": 1,
      "items": {
        "$ref": "#/definitions/UserRole"
      }
    },
    "TypeEnum": {
      "type": "string",
      "enum": [
        "work",
        "home"
      ]
    },
    "UserEmail": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^.+\\@.+\\..+$"
        },
        "type": {
          "$ref": "#/definitions/TypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserEmailsArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/UserEmail"
      }
    },
    "UserAddress": {
      "type": "object",
      "properties": {
        "formatted": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        },
        "streetAddress": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "locality": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "region": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "postalCode": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "country": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "type": {
          "$ref": "#/definitions/TypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserAddressesArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/UserAddress"
      }
    },
    "PhoneTypeEnum": {
      "type": "string",
      "enum": [
        "work",
        "home",
        "mobile"
      ]
    },
    "UserPhoneNumber": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45,
          "pattern": "^[ 0-9_./()*#+-]*$"
        },
        "type": {
          "$ref": "#/definitions/PhoneTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserPhoneNumbersArray": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "$ref": "#/definitions/UserPhoneNumber"
      }
    },
    "PhotoTypeEnum": {
      "type": "string",
      "enum": [
        "thumbnail",
        "photo"
      ]
    },
    "UserPhoto": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/definitions/PhotoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserPhotosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/UserPhoto"
      }
    },
    "resourceType": {
      "type": "string",
      "enum": [
        "User"
      ]
    },
    "UserMeta": {
      "type": "object",
      "properties": {
        "resourceType": {
          "$ref": "#/definitions/resourceType"
        },
        "created": {
          "type": "string",
          "maxLength": 30
        },
        "lastModified": {
          "type": "string",
          "maxLength": 30
        },
        "location": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        }
      }
    },
    "LogoTypeEnum": {
      "type": "string",
      "enum": [
        "thumbnail",
        "logo"
      ]
    },
    "UserGroupLogo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/definitions/LogoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserGroupLogosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/UserGroupLogo"
      }
    },
    "UserGroup": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "display": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "logos": {
          "$ref": "#/definitions/UserGroupLogosArray"
        },
        "owner": {
          "type": "boolean"
        },
        "assignedByFilter": {
          "type": "boolean"
        }
      }
    },
    "UserGroupsArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/UserGroup"
      }
    },
    "EnterpriseManager": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        }
      }
    },
    "EnterpriseExtension": {
      "type": "object",
      "properties": {
        "employeeNumber": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "costCenter": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "organization": {
          "type": "string",
          "minLength": 0,
          "maxLength": 100
        },
        "division": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "department": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "manager": {
          "$ref": "#/definitions/EnterpriseManager"
        }
      }
    },
    "CompanyLogo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/definitions/LogoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "CompanyLogosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/CompanyLogo"
      }
    },
    "ChatMethodEnum": {
      "type": "string",
      "enum": [
        "microsoftTeams",
        "googleChat",
        "slack"
      ]
    },
    "ChatMethodsEmailsWorkArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/definitions/ChatMethodEnum"
      }
    },
    "ChatMethodsEmailsHomeArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/definitions/ChatMethodEnum"
      }
    },
    "ChatMethodsUserNameArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/definitions/ChatMethodEnum"
      }
    },
    "ChatMethodPhoneEnum": {
      "type": "string",
      "enum": [
        "whatsApp"
      ]
    },
    "ChatMethodsPhoneNumbersWorkArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/definitions/ChatMethodPhoneEnum"
      }
    },
    "ChatMethodsPhoneNumbersHomeArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/definitions/ChatMethodPhoneEnum"
      }
    },
    "ChatMethodsPhoneNumbersMobileArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/definitions/ChatMethodPhoneEnum"
      }
    },
    "ChatMethods": {
      "type": "object",
      "properties": {
        "emailsWork": {
          "$ref": "#/definitions/ChatMethodsEmailsWorkArray"
        },
        "emailsHome": {
          "$ref": "#/definitions/ChatMethodsEmailsHomeArray"
        },
        "userName": {
          "$ref": "#/definitions/ChatMethodsUserNameArray"
        },
        "phoneNumbersWork": {
          "$ref": "#/definitions/ChatMethodsPhoneNumbersWorkArray"
        },
        "phoneNumbersHome": {
          "$ref": "#/definitions/ChatMethodsPhoneNumbersHomeArray"
        },
        "phoneNumbersMobile": {
          "$ref": "#/definitions/ChatMethodsPhoneNumbersMobileArray"
        }
      }
    },
    "ManagerChainEntryPhoto": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/definitions/PhotoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "ManagerChainEntryPhotosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/ManagerChainEntryPhoto"
      }
    },
    "ManagerChainEntry": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "directReportCount": {
          "type": "integer",
          "minimum": 0
        },
        "title": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "division": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "department": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "photos": {
          "$ref": "#/definitions/ManagerChainEntryPhotosArray"
        }
      }
    },
    "ManagerChainItems": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ManagerChainEntry"
      }
    },
    "ManagerChain": {
      "type": "object",
      "properties": {
        "items": {
          "$ref": "#/definitions/ManagerChainItems"
        },
        "truncated": {
          "type": "boolean"
        }
      }
    },
    "FdUserExtension": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "minLength": 0,
          "maxLength": 250
        },
        "directoryId": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "companyId": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "companyLogos": {
          "$ref": "#/definitions/CompanyLogosArray"
        },
        "custom01": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "custom02": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "custom03": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "chatMethods": {
          "$ref": "#/definitions/ChatMethods"
        },
        "directReportCount": {
          "type": "integer",
          "minimum": 0
        },
        "managerChain": {
          "$ref": "#/definitions/ManagerChain"
        }
      }
    },
    "UserResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:User",
          "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:User"
        ],
        "id": "c3a26dd3-27a0-4dec-a2ac-ce211e105f97",
        "externalId": "701984",
        "userName": "bjensen@example.com",
        "name": {
          "familyName": "Jensen",
          "givenName": "Barbara"
        },
        "displayName": "Barbara Jensen",
        "nickName": "Babs",
        "profileUrl": "https://login.example.com/bjensen",
        "emails": [
          {
            "value": "bjensen@example.com",
            "type": "work",
            "primary": true
          },
          {
            "value": "babs@jensen.org",
            "type": "home"
          }
        ],
        "addresses": [
          {
            "type": "work",
            "streetAddress": "100 Universal City Plaza",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
            "primary": true
          },
          {
            "type": "home",
            "streetAddress": "456 Hollywood Blvd",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA"
          }
        ],
        "phoneNumbers": [
          {
            "value": "555-555-5555",
            "type": "work"
          },
          {
            "value": "555-555-4444",
            "type": "mobile"
          }
        ],
        "photos": [
          {
            "value": "https://photos.example.com/bjensen_photo.jpg",
            "type": "photo",
            "primary": true
          },
          {
            "value": "https://photos.example.com/bjensen_thumbnail.jpg",
            "type": "thumbnail"
          }
        ],
        "userType": "Employee",
        "title": "Tour Guide",
        "preferredLanguage": "en-US",
        "locale": "en-US",
        "timezone": "America/Los_Angeles",
        "active": true,
        "groups": [
          {
            "value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
            "ref": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
            "display": "Tour Guides"
          }
        ],
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "employeeNumber": "701984",
          "costCenter": "4130",
          "organization": "Universal Studios",
          "division": "Theme Park",
          "department": "Tour Operations",
          "manager": {
            "value": "26118915-6090-4610-87e4-49d8ca9f808d",
            "ref": "../v2/Users/26118915-6090-4610-87e4-49d8ca9f808d",
            "displayName": "John Smith"
          }
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "description": "Full time tour guide",
          "directoryId": "f819cbe8-5e6e-4c82-b8c6-a0d4a3fc5c27",
          "companyId": "a4a4e7f8-42cc-4f3e-bd3f-4c3a88e8e4f0",
          "custom01": "Badge Number: 12345",
          "directReportCount": 3
        },
        "meta": {
          "resourceType": "User",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Users/c3a26dd3-27a0-4dec-a2ac-ce211e105f97"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/UserSchemaUrnsArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "name": {
          "$ref": "#/definitions/UserName"
        },
        "userName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150,
          "pattern": "^.+\\@.+\\..+$"
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "nickName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "profileUrl": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "roles": {
          "$ref": "#/definitions/UserRolesArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/UserRolesArray"
            },
            {
              "$ref": "#/x-alt-definitions/RoleEnum"
            }
          ]
        },
        "active": {
          "type": "boolean"
        },
        "password": {
          "type": "string",
          "minLength": 8,
          "maxLength": 30,
          "pattern": "^(?=.{8,})(?=.*?[^\\w\\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*"
        },
        "emails": {
          "$ref": "#/definitions/UserEmailsArray"
        },
        "addresses": {
          "$ref": "#/definitions/UserAddressesArray"
        },
        "phoneNumbers": {
          "$ref": "#/definitions/UserPhoneNumbersArray"
        },
        "userType": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "preferredLanguage": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "locale": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "timezone": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "photos": {
          "$ref": "#/definitions/UserPhotosArray"
        },
        "meta": {
          "$ref": "#/definitions/UserMeta"
        },
        "title": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "groups": {
          "$ref": "#/definitions/UserGroupsArray"
        },
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "$ref": "#/definitions/EnterpriseExtension"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "$ref": "#/definitions/FdUserExtension"
        }
      }
    },
    "schemas": {
      "type": "array",
      "example": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
      ],
      "items": {
        "type": "string"
      }
    },
    "GroupSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:ietf:params:scim:schemas:core:2.0:Group",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group"
      ]
    },
    "GroupSchemasArray": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "items": {
        "$ref": "#/definitions/GroupSchemaUrn"
      }
    },
    "MemberPhotoTypeEnum": {
      "type": "string",
      "enum": [
        "thumbnail",
        "photo"
      ]
    },
    "MemberPhoto": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/definitions/MemberPhotoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "photos": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/MemberPhoto"
      }
    },
    "GroupRoleEnum": {
      "type": "string",
      "enum": [
        "member",
        "owner"
      ]
    },
    "GroupMember": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        },
        "display": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "photos": {
          "$ref": "#/definitions/photos"
        },
        "groupRole": {
          "$ref": "#/definitions/GroupRoleEnum"
        }
      }
    },
    "GroupMembersScimArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/GroupMember"
      }
    },
    "SharedAttributeEnum": {
      "type": "string",
      "enum": [
        "id",
        "userName",
        "externalId",
        "familyName",
        "givenName",
        "displayName",
        "nickName",
        "profileUrl",
        "emailsHome",
        "emailsWork",
        "streetAddressWork",
        "postalCodeWork",
        "localityWork",
        "regionWork",
        "countryWork",
        "streetAddressHome",
        "localityHome",
        "postalCodeHome",
        "regionHome",
        "countryHome",
        "phoneNumbersWork",
        "phoneNumbersHome",
        "phoneNumbersMobile",
        "photos",
        "userType",
        "title",
        "employeeNumber",
        "costCenter",
        "division",
        "department",
        "manager",
        "description",
        "custom01",
        "custom02",
        "custom03"
      ]
    },
    "SharedAttributesScimArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SharedAttributeEnum"
      }
    },
    "AllowedOAuthClientsArray": {
      "type": "string",
      "enum": [
        "*"
      ]
    },
    "GroupLogo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/definitions/LogoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "GroupLogosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/definitions/GroupLogo"
      }
    },
    "fqlon": {
      "type": "object"
    },
    "FdGroupExtension": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "minLength": 0,
          "maxLength": 250
        },
        "groupRole": {
          "$ref": "#/definitions/GroupRoleEnum"
        },
        "assignedByFilter": {
          "type": "boolean"
        },
        "sharedAttributes": {
          "$ref": "#/definitions/SharedAttributesScimArray"
        },
        "allowedOAuthClients": {
          "$ref": "#/definitions/AllowedOAuthClientsArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/AllowedOAuthClientsArray"
            },
            {
              "$ref": "#/x-alt-definitions/Model1"
            }
          ]
        },
        "chatMethods": {
          "$ref": "#/definitions/ChatMethods"
        },
        "logos": {
          "$ref": "#/definitions/GroupLogosArray"
        },
        "fql": {
          "type": "string",
          "minLength": 0,
          "maxLength": 255
        },
        "fqlon": {
          "$ref": "#/definitions/fqlon"
        }
      }
    },
    "GroupResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:Group",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:Group"
        ],
        "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
        "displayName": "Tour Guides",
        "members": [
          {
            "value": "2819c223-7f76-453a-919d-413861904646",
            "ref": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646",
            "display": "Babs Jensen",
            "groupRole": "owner",
            "photos": [
              {
                "value": "https://photos.example.com/bjensen_photo.jpg",
                "type": "photo"
              },
              {
                "value": "https://photos.example.com/bjensen_thumbnail.jpg",
                "type": "thumbnail"
              }
            ]
          },
          {
            "value": "902c246b-6245-4190-8e05-0018c3524c9a",
            "ref": "https://api.federated.directory/v2/Users/902c246b-6245-4190-8e05-0018c3524c9a",
            "display": "Mandy Pepperidge",
            "groupRole": "member",
            "photos": [
              {
                "value": "https://photos.example.com/mandy_photo.jpg",
                "type": "photo"
              }
            ]
          }
        ],
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
          "description": "All certified tour guides",
          "groupRole": "owner",
          "assignedByFilter": false,
          "sharedAttributes": [
            "displayName",
            "title",
            "photos",
            "department"
          ],
          "logos": [
            {
              "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/logo.jpg",
              "type": "logo",
              "primary": true
            },
            {
              "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/thumb/logo.jpg",
              "type": "thumbnail"
            }
          ],
          "fql": null
        },
        "meta": {
          "resourceType": "Group",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/GroupSchemasArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 70
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "members": {
          "$ref": "#/definitions/GroupMembersScimArray"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
          "$ref": "#/definitions/FdGroupExtension"
        }
      }
    },
    "Resources": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/GroupResponse"
      }
    },
    "GroupListResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        ],
        "totalResults": 1,
        "itemsPerPage": 1,
        "startIndex": 1,
        "Resources": [
          {
            "schemas": [
              "urn:ietf:params:scim:schemas:core:2.0:Group",
              "urn:ietf:params:scim:schemas:extension:fd:2.0:Group"
            ],
            "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
            "displayName": "Tour Guides",
            "members": [
              {
                "value": "2819c223-7f76-453a-919d-413861904646",
                "ref": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646",
                "display": "Babs Jensen",
                "groupRole": "owner",
                "photos": [
                  {
                    "value": "https://photos.example.com/bjensen_photo.jpg",
                    "type": "photo"
                  },
                  {
                    "value": "https://photos.example.com/bjensen_thumbnail.jpg",
                    "type": "thumbnail"
                  }
                ]
              },
              {
                "value": "902c246b-6245-4190-8e05-0018c3524c9a",
                "ref": "https://api.federated.directory/v2/Users/902c246b-6245-4190-8e05-0018c3524c9a",
                "display": "Mandy Pepperidge",
                "groupRole": "member",
                "photos": [
                  {
                    "value": "https://photos.example.com/mandy_photo.jpg",
                    "type": "photo"
                  }
                ]
              }
            ],
            "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
              "description": "All certified tour guides",
              "groupRole": "owner",
              "assignedByFilter": false,
              "sharedAttributes": [
                "displayName",
                "title",
                "photos",
                "department"
              ],
              "logos": [
                {
                  "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/logo.jpg",
                  "type": "logo",
                  "primary": true
                },
                {
                  "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/thumb/logo.jpg",
                  "type": "thumbnail"
                }
              ],
              "fql": null
            },
            "meta": {
              "resourceType": "Group",
              "created": "2023-01-23T04:56:22Z",
              "lastModified": "2023-05-13T11:05:29Z",
              "location": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a"
            }
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/schemas"
        },
        "totalResults": {
          "type": "number",
          "example": 1
        },
        "itemsPerPage": {
          "type": "number",
          "example": 10
        },
        "startIndex": {
          "type": "number",
          "example": 1
        },
        "Resources": {
          "$ref": "#/definitions/Resources"
        }
      }
    },
    "ResourceTypeListSchemas": {
      "type": "array",
      "example": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
      ],
      "items": {
        "type": "string"
      }
    },
    "SchemaExtension": {
      "type": "object",
      "properties": {
        "schema": {
          "type": "string"
        },
        "required": {
          "type": "boolean"
        }
      }
    },
    "SchemaExtensions": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SchemaExtension"
      }
    },
    "ResourceTypeMeta": {
      "type": "object",
      "properties": {
        "location": {
          "type": "string"
        },
        "resourceType": {
          "type": "string"
        }
      }
    },
    "ScimResourceType": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "endpoint": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "schema": {
          "type": "string"
        },
        "schemaExtensions": {
          "$ref": "#/definitions/SchemaExtensions"
        },
        "meta": {
          "$ref": "#/definitions/ResourceTypeMeta"
        }
      }
    },
    "ScimResourceTypes": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ScimResourceType"
      }
    },
    "ResourceTypeListResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        ],
        "totalResults": 1,
        "itemsPerPage": 50,
        "startIndex": 1,
        "Resources": [
          {
            "schemas": [
              "urn:ietf:params:scim:schemas:core:2.0:ResourceType"
            ],
            "id": "User",
            "name": "User",
            "endpoint": "/v2/Users",
            "description": "User data forms your directory and they can search your Federated Directory ",
            "schema": "urn:ietf:params:scim:schemas:core:2.0:User",
            "schemaExtensions": [
              {
                "schema": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
                "required": false
              },
              {
                "schema": "urn:ietf:params:scim:schemas:extension:fd:2.0:User",
                "required": false
              }
            ],
            "meta": {
              "location": "https://api.federated.directory/v2/ResourceTypes/User",
              "resourceType": "ResourceType"
            }
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/ResourceTypeListSchemas"
        },
        "totalResults": {
          "type": "number",
          "example": 1
        },
        "itemsPerPage": {
          "type": "number",
          "example": 50
        },
        "startIndex": {
          "type": "number",
          "example": 1
        },
        "Resources": {
          "$ref": "#/definitions/ScimResourceTypes"
        }
      }
    },
    "SchemaListSchemas": {
      "type": "array",
      "example": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
      ],
      "items": {
        "type": "string"
      }
    },
    "SchemaAttribute": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "multiValued": {
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "required": {
          "type": "boolean"
        },
        "caseExact": {
          "type": "boolean"
        },
        "mutability": {
          "type": "string"
        },
        "returned": {
          "type": "string"
        },
        "uniqueness": {
          "type": "string"
        }
      }
    },
    "SchemaAttributes": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SchemaAttribute"
      }
    },
    "SchemaMeta": {
      "type": "object",
      "properties": {
        "resourceType": {
          "type": "string"
        },
        "location": {
          "type": "string"
        }
      }
    },
    "ScimSchema": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "attributes": {
          "$ref": "#/definitions/SchemaAttributes"
        },
        "meta": {
          "$ref": "#/definitions/SchemaMeta"
        }
      }
    },
    "ScimSchemas": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ScimSchema"
      }
    },
    "SchemaListResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        ],
        "totalResults": 4,
        "itemsPerPage": 50,
        "startIndex": 1,
        "Resources": [
          {
            "id": "urn:ietf:params:scim:schemas:core:2.0:User",
            "name": "User",
            "description": "User Account",
            "attributes": [
              {
                "name": "id",
                "type": "string",
                "multiValued": false,
                "description": "Globally Unique identifier for the User. Used for all UPDATE and DELETE actions.REQUIRED on a user.",
                "required": true,
                "caseExact": true,
                "mutability": "readOnly",
                "returned": "default",
                "uniqueness": "global",
                "minLength": 36,
                "maxLength": 36,
                "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
              },
              {
                "name": "externalId",
                "type": "string",
                "multiValued": false,
                "description": "Identifier of the user from the mastering source.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 70
              },
              {
                "name": "userName",
                "type": "string",
                "multiValued": false,
                "description": "Unique identifier for the User, typically used by the user to directly authenticate or to map with the username within the identity provider. Each User MUST include a non - empty userName value.This identifier MUST be unique within a directory within company. REQUIRED on a user.",
                "required": true,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "directory",
                "minLength": 1,
                "maxLength": 150,
                "pattern": "^.+$"
              },
              {
                "name": "name",
                "type": "complex",
                "multiValued": false,
                "description": "The components of the user's real name. Returns the individual component attributes using the other sub - attributes.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "familyName",
                    "type": "string",
                    "multiValued": false,
                    "description": "The family name of the User, or last name in most Western languages(e.g., 'Jensen' given the full name 'Ms. Barbara J Jensen, III').",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150
                  },
                  {
                    "name": "givenName",
                    "type": "string",
                    "multiValued": false,
                    "description": "The given name of the User, or first name in most Western languages(e.g., 'Barbara' given the full name 'Ms. Barbara J Jensen, III').",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150
                  }
                ],
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none"
              },
              {
                "name": "displayName",
                "type": "string",
                "multiValued": false,
                "description": "The name of the User, suitable for display to end - users. The name SHOULD be the full name of the User being described.",
                "required": true,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "name": "nickName",
                "type": "string",
                "multiValued": false,
                "description": "The casual way to address the user in real life, e.g.,'Bob' or 'Bobby' instead of 'Robert'.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "profileUrl",
                "type": "reference",
                "referenceTypes": [
                  "external"
                ],
                "multiValued": false,
                "description": "A fully qualified URL pointing to a page representing the User 's online profile.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 10,
                "maxLength": 200,
                "pattern": "^(https?://(S+.[^/s]+(/S+|/|)))$"
              },
              {
                "name": "title",
                "type": "string",
                "multiValued": false,
                "description": "The user's title, such as Vice President.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "userType",
                "type": "string",
                "multiValued": false,
                "description": "Used to identify the relationship between the organization and the user.Typical values used might be 'Contractor', 'Employee','Intern','Temp','External', and 'Unknown', but any value may be used.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "preferredLanguage",
                "type": "string",
                "multiValued": false,
                "description": "Indicates the User's preferred written or spoken language.e.g., 'en_US' specifies the language English and country US.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 5
              },
              {
                "name": "locale",
                "type": "string",
                "multiValued": false,
                "description": "Used to indicate the User's default location for purposes of localizing items such as currency, date time format, or numerical representations.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 5
              },
              {
                "name": "timezone",
                "type": "string",
                "multiValued": false,
                "description": "The User's time zone in the 'Olson' time zone database format, e.g., 'America/Los_Angeles'.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "active",
                "type": "boolean",
                "multiValued": false,
                "description": "A Boolean value indicating the User's administrative status.",
                "required": false,
                "mutability": "readWrite",
                "returned": "default"
              },
              {
                "name": "password",
                "type": "string",
                "multiValued": false,
                "description": "The User's cleartext password. This attribute is intended to be used as a means to specify an initial password when creating a new User or to reset an existing User 's password.",
                "required": false,
                "caseExact": false,
                "mutability": "writeOnly",
                "returned": "never",
                "uniqueness": "none",
                "minLength": 8,
                "maxLength": 30,
                "pattern": "^(?=.{8,})(?=.*?[^ws])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*$"
              },
              {
                "name": "emails",
                "type": "complex",
                "multiValued": true,
                "description": "Email addresses for the user. Canonical type values of 'work','home', and 'other'.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "string",
                    "multiValued": false,
                    "description": "Email addresses for the user. Canonical type values of 'work','home', and 'other'.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150,
                    "pattern": "^.+@.+..+$"
                  },
                  {
                    "name": "type",
                    "type": "string",
                    "multiValued": false,
                    "description": "A label indicating the attribute's function, e.g., 'work' or 'home'.",
                    "required": false,
                    "caseExact": true,
                    "canonicalValues": [
                      "work",
                      "home"
                    ],
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "primary",
                    "type": "boolean",
                    "multiValued": false,
                    "description": "A Boolean value indicating the 'primary' or preferred attribute value for this attribute,  e.g.,the preferred mailing address or primary email address.The primary attribute value 'true'. Always fixed to the 'work' email address",
                    "required": false,
                    "mutability": "readOnly",
                    "returned": "default"
                  }
                ],
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none"
              },
              {
                "name": "phoneNumbers",
                "type": "complex",
                "multiValued": true,
                "description": "Phone numbers for the User. The value SHOULD be canonicalized by the service provider according to the format specified in RFC 3966, e.g.,'+1-201-555-0123'. Canonical type values of 'work','home' and 'mobile'",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "string",
                    "multiValued": false,
                    "description": "Phone number of the User.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 45,
                    "pattern": "^[ 0-9_./()*#+-]*$"
                  },
                  {
                    "name": "type",
                    "type": "string",
                    "multiValued": false,
                    "description": "A label indicating the attribute's function, e.g., 'work', 'home', 'mobile'. ",
                    "required": false,
                    "caseExact": true,
                    "canonicalValues": [
                      "work",
                      "home",
                      "mobile"
                    ],
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "primary",
                    "type": "boolean",
                    "multiValued": false,
                    "description": "A Boolean value indicating the 'primary' or preferred attribute value for this attribute, e.g., the preferred phone number or primary phone number. Fixed to the 'work' phone' ",
                    "required": false,
                    "mutability": "readOnly",
                    "returned": "default"
                  }
                ],
                "mutability": "readWrite",
                "returned": "default"
              },
              {
                "name": "photos",
                "type": "complex",
                "multiValued": true,
                "description": "URLs of photos of the User.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "reference",
                    "referenceTypes": [
                      "external"
                    ],
                    "multiValued": false,
                    "description": "URL of a photo of the User.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 10,
                    "maxLength": 200,
                    "pattern": "^(https?://(S+.[^/s]+(/S+|/|)))$"
                  },
                  {
                    "name": "type",
                    "type": "string",
                    "multiValued": false,
                    "description": "A label indicating the attribute's function, 'photo' or 'thumbnail'. ",
                    "required": false,
                    "caseExact": true,
                    "canonicalValues": [
                      "photo",
                      "thumbnail"
                    ],
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "primary",
                    "type": "boolean",
                    "multiValued": false,
                    "description": "A Boolean value indicating the 'primary' or preferred attribute value for this attribute, e.g., the preferred  photo or thumbnail.Fixed to the 'photo' type.",
                    "required": false,
                    "mutability": "readOnly",
                    "returned": "default"
                  }
                ],
                "mutability": "readWrite",
                "returned": "default"
              },
              {
                "name": "addresses",
                "type": "complex",
                "multiValued": true,
                "description": "A physical mailing address for this User.  Canonical type values of 'work',  'home',   and 'other'.This attribute is a complex type with the following sub - attributes.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "streetAddress",
                    "type": "string",
                    "multiValued": false,
                    "description": "The full street address component,  which may include house number,   street name,     P.O.box,   and multi - line extended street address information.This attribute MAY contain newlines.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150
                  },
                  {
                    "name": "locality",
                    "type": "string",
                    "multiValued": false,
                    "description": "The city or locality component.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150
                  },
                  {
                    "name": "region",
                    "type": "string",
                    "multiValued": false,
                    "description": "The state or region component.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150
                  },
                  {
                    "name": "postalCode",
                    "type": "string",
                    "multiValued": false,
                    "description": "The zip code or postal code component.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 45
                  },
                  {
                    "name": "country",
                    "type": "string",
                    "multiValued": false,
                    "description": "The country name component.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 150
                  },
                  {
                    "name": "type",
                    "type": "string",
                    "multiValued": false,
                    "description": "A label indicating the attribute's    function,   e.g.,  'work' and 'home'. ",
                    "required": false,
                    "caseExact": true,
                    "canonicalValues": [
                      "work",
                      "home"
                    ],
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  }
                ],
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none"
              },
              {
                "name": "roles",
                "type": "complex",
                "multiValued": true,
                "description": "The role for the User that collectively represent the entitlements of a user within Federated Directory. Defaults to 'user'.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "string",
                    "multiValued": false,
                    "description": "The value of a role.",
                    "required": false,
                    "caseExact": true,
                    "canonicalValues": [
                      "admin",
                      "user"
                    ],
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "display",
                    "type": "string",
                    "multiValued": false,
                    "description": "A human-readable name, primarily used for display purposes.READ - ONLY.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none"
                  }
                ],
                "mutability": "readWrite",
                "returned": "default"
              },
              {
                "name": "meta",
                "type": "complex",
                "multiValued": false,
                "description": "Metadata on the user object. Only returned when User info is retrieved on one specific User id.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "created",
                    "type": "DateTime",
                    "multiValued": false,
                    "description": "Date and time when the User was created.",
                    "required": false,
                    "caseExact": true,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 20,
                    "maxLength": 20
                  },
                  {
                    "name": "lastModified",
                    "type": "DateTime",
                    "multiValued": false,
                    "description": "The most recent DateTime that the details of this User were updated. If this User has never been modified since its initial creation, the value has the same as 'created'.",
                    "required": false,
                    "caseExact": true,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 20,
                    "maxLength": 20
                  },
                  {
                    "name": "location",
                    "type": "string",
                    "multiValued": false,
                    "description": "The URI of the User being returned",
                    "required": false,
                    "caseExact": false,
                    "canonicalValues": [
                      "User"
                    ],
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 70,
                    "maxLength": 80,
                    "pattern": "^(https?://(S+.[^/s]+(/S+|/|)))$"
                  },
                  {
                    "name": "resourceType",
                    "type": "DateTime",
                    "multiValued": false,
                    "description": "The name of the resource type of the resource. In this case, always 'User'. ",
                    "required": false,
                    "caseExact": true,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 5,
                    "maxLength": 5
                  }
                ],
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none"
              }
            ],
            "meta": {
              "resourceType": "Schema",
              "location": "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
            }
          },
          {
            "id": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "name": "EnterpriseUser",
            "description": "Enterprise User schema extension",
            "attributes": [
              {
                "name": "employeeNumber",
                "type": "string",
                "multiValued": false,
                "description": "Numeric or alphanumeric identifier assigned to a person, typically based on order of hire or association with an   organization.  ",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "costCenter",
                "type": "string",
                "multiValued": false,
                "description": "Identifies the name of a cost center.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "organization",
                "type": "string",
                "multiValued": false,
                "description": "Identifies the name of the organization.",
                "required": false,
                "caseExact": false,
                "mutability": "readOnly",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 100
              },
              {
                "name": "division",
                "type": "string",
                "multiValued": false,
                "description": "Identifies the name of a division.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "department",
                "type": "string",
                "multiValued": false,
                "description": "Identifies the name of a department.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "manager",
                "type": "complex",
                "multiValued": false,
                "description": "The User's manager. A complex type that creates an organizational hierarchy by referencing the 'id' attribute of another User. Include 'id' (value) to create an actual link. Also allows adding only a displayName. If id/value is provided, displayName will be ignored.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "string",
                    "multiValued": false,
                    "description": "The id of the SCIM resource representing the User 's manager. OPTIONAL.",
                    "required": false,
                    "caseExact": true,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 36,
                    "maxLength": 36,
                    "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
                  },
                  {
                    "name": "$ref",
                    "type": "reference",
                    "referenceTypes": [
                      "User"
                    ],
                    "multiValued": false,
                    "description": "The URI of the SCIM resource representing the User 's manager. OPTIONAL.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  {
                    "name": "displayName",
                    "type": "string",
                    "multiValued": false,
                    "description": "The displayName of the User's manager. Will be ignored if value is also provided. OPTIONAL.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 0,
                    "maxLength": 200
                  }
                ],
                "mutability": "readWrite",
                "returned": "default"
              }
            ],
            "meta": {
              "resourceType": "Schema",
              "location": "/v2/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
            }
          },
          {
            "id": "urn:ietf:params:scim:schemas:extension:fd:2.0:User",
            "name": "FederatedDirectoryUser",
            "description": "Federated Directory specific User schema extension",
            "attributes": [
              {
                "name": "description",
                "type": "string",
                "multiValued": false,
                "description": "Description or note on a User.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 250
              },
              {
                "name": "companyId",
                "type": "string",
                "multiValued": false,
                "description": "The unique identifier of the User's Company",
                "required": true,
                "caseExact": true,
                "mutability": "immutable",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 36,
                "maxLength": 36,
                "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
              },
              {
                "name": "companyLogos",
                "type": "complex",
                "multiValued": true,
                "description": "URLs of the logos of the Company.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "reference",
                    "referenceTypes": [
                      "external"
                    ],
                    "multiValued": false,
                    "description": "URL of a logo of the Company.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 10,
                    "maxLength": 200,
                    "pattern": "^(https?://(S+.[^/s]+(/S+|/|)))$"
                  },
                  {
                    "name": "type",
                    "type": "string",
                    "multiValued": false,
                    "description": "A label indicating the attribute's function, 'logo' or 'thumbnail'. ",
                    "required": false,
                    "caseExact": true,
                    "canonicalValues": [
                      "logo",
                      "thumbnail"
                    ],
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  }
                ],
                "mutability": "readOnly",
                "returned": "default"
              },
              {
                "name": "companyLogos",
                "type": "string",
                "multiValued": false,
                "description": "URL of logo of the User's Company",
                "required": false,
                "caseExact": false,
                "mutability": "readOnly",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 10,
                "maxLength": 200,
                "pattern": "^(https?://(S+.[^/s]+(/S+|/|)))$"
              },
              {
                "name": "directoryId",
                "type": "string",
                "multiValued": false,
                "description": "The unique identifier of the Directory this User resides in.",
                "required": true,
                "caseExact": true,
                "mutability": "immutable",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 36,
                "maxLength": 36,
                "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
              },
              {
                "name": "custom01",
                "type": "string",
                "multiValued": false,
                "description": "Custom attribute that can be used to extend the users default attributes.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "custom02",
                "type": "string",
                "multiValued": false,
                "description": "Custom attribute that can be used to extend the users default attributes.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "custom03",
                "type": "string",
                "multiValued": false,
                "description": "Custom attribute that can be used to extend the users default attributes.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 150
              },
              {
                "name": "groups",
                "type": "complex",
                "multiValued": true,
                "description": "The groups in which a user is a member.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "string",
                    "description": "Uuid of the group",
                    "required": true,
                    "caseExact": true,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "global",
                    "minLength": 36,
                    "maxLength": 36,
                    "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
                  },
                  {
                    "name": "display",
                    "type": "string",
                    "multiValued": false,
                    "description": "The name of the Group, suitable for display to end - users.",
                    "required": true,
                    "caseExact": false,
                    "mutability": "readWrite",
                    "returned": "default",
                    "uniqueness": "none",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  {
                    "name": "owner",
                    "type": "boolean",
                    "multiValued": false,
                    "description": "A Boolean value indicating the User's administrative status in a group.",
                    "required": false,
                    "mutability": "readWrite",
                    "returned": "default"
                  }
                ]
              }
            ],
            "meta": {
              "resourceType": "Schema",
              "location": "/v2/Schemas/urn:ietf:params:scim:schemas:fd:fd:2.0:User"
            }
          },
          {
            "id": "urn:ietf:params:scim:schemas:core:2.0:Group",
            "name": "Group",
            "description": "Group Resource",
            "attributes": [
              {
                "name": "id",
                "type": "string",
                "multiValued": false,
                "description": "Globally Unique identifier for the Group. Used for all UPDATE and DELETE actions. REQUIRED on a group.",
                "required": true,
                "caseExact": true,
                "mutability": "readOnly",
                "returned": "default",
                "uniqueness": "global",
                "minLength": 36,
                "maxLength": 36,
                "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
              },
              {
                "name": "externalId",
                "type": "string",
                "multiValued": false,
                "description": "Identifier of the group from the mastering source.",
                "required": false,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 0,
                "maxLength": 70
              },
              {
                "name": "displayName",
                "type": "string",
                "multiValued": false,
                "description": "A human-readable name for the Group. REQUIRED.",
                "required": true,
                "caseExact": false,
                "mutability": "readWrite",
                "returned": "default",
                "uniqueness": "none",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "name": "members",
                "type": "complex",
                "multiValued": true,
                "description": "A list of members of the Group.",
                "required": false,
                "subAttributes": [
                  {
                    "name": "value",
                    "type": "string",
                    "multiValued": false,
                    "description": "Identifier of the member of this Group.",
                    "required": true,
                    "caseExact": true,
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "$ref",
                    "type": "reference",
                    "referenceTypes": [
                      "User",
                      "Group"
                    ],
                    "multiValued": false,
                    "description": "The URI of the corresponding Group member resource.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "display",
                    "type": "string",
                    "multiValued": false,
                    "description": "A human-readable name, primarily used for display purposes. READ-ONLY.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "readOnly",
                    "returned": "default",
                    "uniqueness": "none"
                  },
                  {
                    "name": "type",
                    "type": "string",
                    "multiValued": false,
                    "description": "A label indicating the type of resource, e.g., 'User' or 'Group'.",
                    "required": false,
                    "caseExact": false,
                    "mutability": "immutable",
                    "returned": "default",
                    "uniqueness": "none"
                  }
                ],
                "mutability": "readWrite",
                "returned": "default"
              }
            ],
            "meta": {
              "resourceType": "Schema",
              "location": "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group"
            }
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/SchemaListSchemas"
        },
        "totalResults": {
          "type": "number",
          "example": 4
        },
        "itemsPerPage": {
          "type": "number",
          "example": 50
        },
        "startIndex": {
          "type": "number",
          "example": 1
        },
        "Resources": {
          "$ref": "#/definitions/ScimSchemas"
        }
      }
    },
    "type": {
      "type": "string",
      "enum": [
        "logo",
        "thumbnail"
      ]
    },
    "Model1": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/type"
        }
      },
      "required": [
        "value",
        "type"
      ]
    },
    "OAuthClientLogosArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Model1"
      }
    },
    "OAuthAuthorizationListItem": {
      "type": "object",
      "properties": {
        "clientId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "logos": {
          "$ref": "#/definitions/OAuthClientLogosArray"
        },
        "description": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "grantedAt": {
          "type": "integer"
        },
        "lastUsedAt": {
          "type": "integer"
        }
      },
      "required": [
        "clientId",
        "name",
        "logos",
        "grantedAt"
      ]
    },
    "OAuthAuthorizationList": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/OAuthAuthorizationListItem"
      }
    },
    "OAuthClientListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "clientId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "logos": {
          "$ref": "#/definitions/OAuthClientLogosArray"
        },
        "description": {
          "type": "string"
        },
        "privacyPolicyUrl": {
          "type": "string"
        },
        "termsOfServiceUrl": {
          "type": "string"
        },
        "developerContactEmail": {
          "type": "string"
        },
        "isCustom": {
          "type": "boolean"
        },
        "groupCount": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "id",
        "clientId",
        "name",
        "logos",
        "isCustom",
        "groupCount"
      ]
    },
    "OAuthClientListItemArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/OAuthClientListItem"
      }
    },
    "allowedScopes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "redirectUris": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "Model2": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/type"
        }
      },
      "required": [
        "value",
        "type"
      ]
    },
    "Model3": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Model2"
      }
    },
    "Model4": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "displayName": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "logos": {
          "$ref": "#/definitions/Model3"
        }
      },
      "required": [
        "id",
        "displayName"
      ]
    },
    "groups": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Model4"
      }
    },
    "OAuthClientSummary": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "clientId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "logos": {
          "$ref": "#/definitions/OAuthClientLogosArray"
        },
        "description": {
          "type": "string"
        },
        "allowedScopes": {
          "$ref": "#/definitions/allowedScopes"
        },
        "redirectUris": {
          "$ref": "#/definitions/redirectUris"
        },
        "privacyPolicyUrl": {
          "type": "string"
        },
        "termsOfServiceUrl": {
          "type": "string"
        },
        "developerContactEmail": {
          "type": "string"
        },
        "isCustom": {
          "type": "boolean"
        },
        "groups": {
          "$ref": "#/definitions/groups"
        },
        "permitted": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "clientId",
        "name",
        "logos",
        "isCustom"
      ]
    },
    "BulkRequestSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:ietf:params:scim:api:messages:2.0:BulkRequest"
      ]
    },
    "BulkRequestSchemasArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/BulkRequestSchemaUrn"
      }
    },
    "BulkRequestMethod": {
      "type": "string",
      "enum": [
        "POST",
        "PUT",
        "PATCH",
        "DELETE"
      ]
    },
    "BulkRequestOperation": {
      "type": "object",
      "properties": {
        "method": {
          "$ref": "#/definitions/BulkRequestMethod"
        },
        "bulkId": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "data": {
          "$ref": "#/definitions/UserResponse",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/UserResponse"
            },
            {
              "$ref": "#/x-alt-definitions/ScimError"
            }
          ]
        }
      },
      "required": [
        "method"
      ]
    },
    "BulkRequestOperationsArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/BulkRequestOperation"
      }
    },
    "BulkRequest": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:BulkRequest"
        ],
        "Operations": [
          {
            "method": "POST",
            "bulkId": "qwerty",
            "path": "/Users",
            "data": {
              "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User"
              ],
              "userName": "bjensen@example.com",
              "displayName": "Babs Jensen"
            }
          },
          {
            "method": "PUT",
            "path": "/Users/2819c223-7f76-453a-919d-413861904646",
            "data": {
              "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User"
              ],
              "userName": "bjensen@example.com",
              "displayName": "Babs Jensen"
            }
          },
          {
            "method": "DELETE",
            "path": "/Users/2819c223-7f76-453a-919d-413861904646"
          },
          {
            "method": "POST",
            "bulkId": "asdfgh",
            "path": "/Users",
            "data": {
              "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User"
              ],
              "userName": "bjensen@example.com",
              "displayName": "Babs Jensen"
            }
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/BulkRequestSchemasArray"
        },
        "failOnErrors": {
          "type": "number"
        },
        "Operations": {
          "$ref": "#/definitions/BulkRequestOperationsArray"
        }
      },
      "required": [
        "schemas",
        "Operations"
      ]
    },
    "BulkResponseSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:ietf:params:scim:api:messages:2.0:BulkResponse"
      ]
    },
    "BulkResponseSchemasArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/BulkResponseSchemaUrn"
      }
    },
    "BulkResponseMethod": {
      "type": "string",
      "enum": [
        "POST",
        "PUT",
        "PATCH",
        "DELETE"
      ]
    },
    "BulkResponseOperationStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "number"
        }
      },
      "required": [
        "code"
      ]
    },
    "BulkResponseOperation": {
      "type": "object",
      "properties": {
        "method": {
          "$ref": "#/definitions/BulkResponseMethod"
        },
        "bulkId": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/BulkResponseOperationStatus"
        },
        "location": {
          "type": "string"
        },
        "response": {
          "$ref": "#/definitions/UserResponse",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/UserResponse"
            },
            {
              "$ref": "#/x-alt-definitions/ScimError"
            }
          ]
        }
      },
      "required": [
        "method"
      ]
    },
    "BulkResponseOperationsArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/BulkResponseOperation"
      }
    },
    "BulkResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:BulkResponse"
        ],
        "Operations": [
          {
            "method": "POST",
            "bulkId": "qwerty",
            "status": {
              "code": 201
            },
            "location": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646"
          },
          {
            "method": "PUT",
            "status": {
              "code": 200
            },
            "location": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646"
          },
          {
            "method": "DELETE",
            "status": {
              "code": 204
            },
            "location": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646"
          },
          {
            "method": "POST",
            "bulkId": "asdfgh",
            "status": {
              "code": 409
            },
            "response": {
              "schemas": [
                "urn:ietf:params:scim:api:messages:2.0:Error"
              ],
              "status": "409",
              "scimType": "uniqueness",
              "detail": "Username already exists within this directory"
            }
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/BulkResponseSchemasArray"
        },
        "Operations": {
          "$ref": "#/definitions/BulkResponseOperationsArray"
        }
      },
      "required": [
        "schemas",
        "Operations"
      ]
    },
    "CreateGroupRequest": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:Group",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:Group"
        ],
        "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
        "displayName": "Tour Guides",
        "members": [
          {
            "value": "2819c223-7f76-453a-919d-413861904646",
            "ref": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646",
            "display": "Babs Jensen",
            "groupRole": "owner",
            "photos": [
              {
                "value": "https://photos.example.com/bjensen_photo.jpg",
                "type": "photo"
              },
              {
                "value": "https://photos.example.com/bjensen_thumbnail.jpg",
                "type": "thumbnail"
              }
            ]
          },
          {
            "value": "902c246b-6245-4190-8e05-0018c3524c9a",
            "ref": "https://api.federated.directory/v2/Users/902c246b-6245-4190-8e05-0018c3524c9a",
            "display": "Mandy Pepperidge",
            "groupRole": "member",
            "photos": [
              {
                "value": "https://photos.example.com/mandy_photo.jpg",
                "type": "photo"
              }
            ]
          }
        ],
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
          "description": "All certified tour guides",
          "groupRole": "owner",
          "assignedByFilter": false,
          "sharedAttributes": [
            "displayName",
            "title",
            "photos",
            "department"
          ],
          "logos": [
            {
              "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/logo.jpg",
              "type": "logo",
              "primary": true
            },
            {
              "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/thumb/logo.jpg",
              "type": "thumbnail"
            }
          ],
          "fql": null
        },
        "meta": {
          "resourceType": "Group",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/GroupSchemasArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 70
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "members": {
          "$ref": "#/definitions/GroupMembersScimArray"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
          "$ref": "#/definitions/FdGroupExtension"
        }
      }
    },
    "CreateUserRequest": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:User",
          "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:User"
        ],
        "id": "c3a26dd3-27a0-4dec-a2ac-ce211e105f97",
        "externalId": "701984",
        "userName": "bjensen@example.com",
        "name": {
          "familyName": "Jensen",
          "givenName": "Barbara"
        },
        "displayName": "Barbara Jensen",
        "nickName": "Babs",
        "profileUrl": "https://login.example.com/bjensen",
        "emails": [
          {
            "value": "bjensen@example.com",
            "type": "work",
            "primary": true
          },
          {
            "value": "babs@jensen.org",
            "type": "home"
          }
        ],
        "addresses": [
          {
            "type": "work",
            "streetAddress": "100 Universal City Plaza",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
            "primary": true
          },
          {
            "type": "home",
            "streetAddress": "456 Hollywood Blvd",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA"
          }
        ],
        "phoneNumbers": [
          {
            "value": "555-555-5555",
            "type": "work"
          },
          {
            "value": "555-555-4444",
            "type": "mobile"
          }
        ],
        "photos": [
          {
            "value": "https://photos.example.com/bjensen_photo.jpg",
            "type": "photo",
            "primary": true
          },
          {
            "value": "https://photos.example.com/bjensen_thumbnail.jpg",
            "type": "thumbnail"
          }
        ],
        "userType": "Employee",
        "title": "Tour Guide",
        "preferredLanguage": "en-US",
        "locale": "en-US",
        "timezone": "America/Los_Angeles",
        "active": true,
        "groups": [
          {
            "value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
            "ref": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
            "display": "Tour Guides"
          }
        ],
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "employeeNumber": "701984",
          "costCenter": "4130",
          "organization": "Universal Studios",
          "division": "Theme Park",
          "department": "Tour Operations",
          "manager": {
            "value": "26118915-6090-4610-87e4-49d8ca9f808d",
            "ref": "../v2/Users/26118915-6090-4610-87e4-49d8ca9f808d",
            "displayName": "John Smith"
          }
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "description": "Full time tour guide",
          "directoryId": "f819cbe8-5e6e-4c82-b8c6-a0d4a3fc5c27",
          "companyId": "a4a4e7f8-42cc-4f3e-bd3f-4c3a88e8e4f0",
          "custom01": "Badge Number: 12345",
          "directReportCount": 3
        },
        "meta": {
          "resourceType": "User",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Users/c3a26dd3-27a0-4dec-a2ac-ce211e105f97"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/UserSchemaUrnsArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "name": {
          "$ref": "#/definitions/UserName"
        },
        "userName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150,
          "pattern": "^.+\\@.+\\..+$"
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "nickName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "profileUrl": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "roles": {
          "$ref": "#/definitions/UserRolesArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/UserRolesArray"
            },
            {
              "$ref": "#/x-alt-definitions/RoleEnum"
            }
          ]
        },
        "active": {
          "type": "boolean"
        },
        "password": {
          "type": "string",
          "minLength": 8,
          "maxLength": 30,
          "pattern": "^(?=.{8,})(?=.*?[^\\w\\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*"
        },
        "emails": {
          "$ref": "#/definitions/UserEmailsArray"
        },
        "addresses": {
          "$ref": "#/definitions/UserAddressesArray"
        },
        "phoneNumbers": {
          "$ref": "#/definitions/UserPhoneNumbersArray"
        },
        "userType": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "preferredLanguage": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "locale": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "timezone": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "photos": {
          "$ref": "#/definitions/UserPhotosArray"
        },
        "meta": {
          "$ref": "#/definitions/UserMeta"
        },
        "title": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "groups": {
          "$ref": "#/definitions/UserGroupsArray"
        },
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "$ref": "#/definitions/EnterpriseExtension"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "$ref": "#/definitions/FdUserExtension"
        }
      }
    },
    "jsonrpc": {
      "type": "string",
      "enum": [
        "2.0"
      ]
    },
    "method": {
      "type": "string",
      "enum": [
        "tools/call"
      ]
    },
    "McpToolArguments": {
      "type": "object",
      "description": "Arguments for the tool (matches tool inputSchema)"
    },
    "McpCallToolParams": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the tool to call"
        },
        "arguments": {
          "$ref": "#/definitions/McpToolArguments"
        }
      },
      "required": [
        "name",
        "arguments"
      ]
    },
    "McpCallToolRequest": {
      "type": "object",
      "properties": {
        "jsonrpc": {
          "$ref": "#/definitions/jsonrpc"
        },
        "method": {
          "$ref": "#/definitions/method"
        },
        "params": {
          "$ref": "#/definitions/McpCallToolParams"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "required": [
        "jsonrpc",
        "method",
        "params",
        "id"
      ]
    },
    "JsonRpcResult": {
      "type": "object"
    },
    "JsonRpcResponse": {
      "type": "object",
      "example": {
        "jsonrpc": "2.0",
        "result": {
          "content": [
            {
              "type": "text",
              "text": "Here are the search results..."
            }
          ]
        },
        "id": 1
      },
      "properties": {
        "jsonrpc": {
          "$ref": "#/definitions/jsonrpc"
        },
        "result": {
          "$ref": "#/definitions/JsonRpcResult"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "required": [
        "jsonrpc"
      ]
    },
    "Model5": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "x-format": {
          "uri": true
        }
      }
    },
    "OAuthClientWrite": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200
        },
        "description": {
          "type": "string",
          "maxLength": 500
        },
        "redirectUris": {
          "$ref": "#/definitions/Model5"
        },
        "privacyPolicyUrl": {
          "type": "string",
          "maxLength": 2048,
          "x-format": {
            "uri": {
              "scheme": [
                "https"
              ]
            }
          }
        },
        "termsOfServiceUrl": {
          "type": "string",
          "maxLength": 2048,
          "x-format": {
            "uri": {
              "scheme": [
                "https"
              ]
            }
          }
        },
        "developerContactEmail": {
          "type": "string",
          "maxLength": 254,
          "x-format": {
            "email": true
          }
        }
      },
      "required": [
        "name",
        "redirectUris"
      ]
    },
    "code_challenge_method": {
      "type": "string",
      "enum": [
        "S256"
      ]
    },
    "OAuthAuthorizeDecision": {
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string"
        },
        "redirect_uri": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        },
        "state": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "code_challenge": {
          "type": "string"
        },
        "code_challenge_method": {
          "$ref": "#/definitions/code_challenge_method"
        },
        "approved": {
          "type": "boolean"
        },
        "resource": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        }
      },
      "required": [
        "client_id",
        "redirect_uri",
        "state",
        "code_challenge",
        "code_challenge_method",
        "approved"
      ]
    },
    "OAuthAuthorizeDecisionResponse": {
      "type": "object",
      "example": {
        "redirectTo": "https://teams.microsoft.com/api/platform/v1.0/oAuthRedirect?code=abc123&state=xyz"
      },
      "properties": {
        "redirectTo": {
          "type": "string",
          "x-format": {
            "uri": true
          }
        }
      },
      "required": [
        "redirectTo"
      ]
    },
    "grant_type": {
      "type": "string",
      "enum": [
        "urn:ietf:params:oauth:grant-type:jwt-bearer",
        "authorization_code",
        "refresh_token"
      ]
    },
    "OAuth2TokenRequest": {
      "type": "object",
      "properties": {
        "grant_type": {
          "$ref": "#/definitions/grant_type"
        },
        "assertion": {
          "type": "string"
        },
        "code": {
          "type": "string"
        },
        "redirect_uri": {
          "type": "string"
        },
        "code_verifier": {
          "type": "string"
        },
        "client_id": {
          "type": "string"
        },
        "client_secret": {
          "type": "string"
        },
        "refresh_token": {
          "type": "string"
        },
        "resource": {
          "type": "string"
        }
      },
      "required": [
        "grant_type",
        "assertion",
        "code",
        "redirect_uri",
        "code_verifier",
        "client_id",
        "refresh_token"
      ]
    },
    "token_type": {
      "type": "string",
      "enum": [
        "Bearer"
      ]
    },
    "OAuth2TokenResponse": {
      "type": "object",
      "example": {
        "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FwaS1kZXYuZmVkZXJhdGVkLmRpcmVjdG9yeS8iLCJhdWQiOiJrZXkiLCJqdGkiOiIwMjI1NjBlMC1mNWQ2LTExZTctOGE4Mi0xOWNhZTI1NjU5YTciLCJleHAiOjIxNDc0ODM2NDd9.7iiyS7WSXhEtENvqTprPajXAYpyQK4UA4EWs2aJloGo",
        "token_type": "Bearer",
        "expires_in": 3600
      },
      "properties": {
        "access_token": {
          "type": "string"
        },
        "token_type": {
          "$ref": "#/definitions/token_type"
        },
        "expires_in": {
          "type": "integer"
        },
        "refresh_token": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "token_type",
        "expires_in"
      ]
    },
    "UpdateUserRequest": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:User",
          "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:User"
        ],
        "id": "c3a26dd3-27a0-4dec-a2ac-ce211e105f97",
        "externalId": "701984",
        "userName": "bjensen@example.com",
        "name": {
          "familyName": "Jensen",
          "givenName": "Barbara"
        },
        "displayName": "Barbara Jensen",
        "nickName": "Babs",
        "profileUrl": "https://login.example.com/bjensen",
        "emails": [
          {
            "value": "bjensen@example.com",
            "type": "work",
            "primary": true
          },
          {
            "value": "babs@jensen.org",
            "type": "home"
          }
        ],
        "addresses": [
          {
            "type": "work",
            "streetAddress": "100 Universal City Plaza",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
            "primary": true
          },
          {
            "type": "home",
            "streetAddress": "456 Hollywood Blvd",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA"
          }
        ],
        "phoneNumbers": [
          {
            "value": "555-555-5555",
            "type": "work"
          },
          {
            "value": "555-555-4444",
            "type": "mobile"
          }
        ],
        "photos": [
          {
            "value": "https://photos.example.com/bjensen_photo.jpg",
            "type": "photo",
            "primary": true
          },
          {
            "value": "https://photos.example.com/bjensen_thumbnail.jpg",
            "type": "thumbnail"
          }
        ],
        "userType": "Employee",
        "title": "Tour Guide",
        "preferredLanguage": "en-US",
        "locale": "en-US",
        "timezone": "America/Los_Angeles",
        "active": true,
        "groups": [
          {
            "value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
            "ref": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
            "display": "Tour Guides"
          }
        ],
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "employeeNumber": "701984",
          "costCenter": "4130",
          "organization": "Universal Studios",
          "division": "Theme Park",
          "department": "Tour Operations",
          "manager": {
            "value": "26118915-6090-4610-87e4-49d8ca9f808d",
            "ref": "../v2/Users/26118915-6090-4610-87e4-49d8ca9f808d",
            "displayName": "John Smith"
          }
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "description": "Full time tour guide",
          "directoryId": "f819cbe8-5e6e-4c82-b8c6-a0d4a3fc5c27",
          "companyId": "a4a4e7f8-42cc-4f3e-bd3f-4c3a88e8e4f0",
          "custom01": "Badge Number: 12345",
          "directReportCount": 3
        },
        "meta": {
          "resourceType": "User",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Users/c3a26dd3-27a0-4dec-a2ac-ce211e105f97"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/UserSchemaUrnsArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "name": {
          "$ref": "#/definitions/UserName"
        },
        "userName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150,
          "pattern": "^.+\\@.+\\..+$"
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "nickName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "profileUrl": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "roles": {
          "$ref": "#/definitions/UserRolesArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/UserRolesArray"
            },
            {
              "$ref": "#/x-alt-definitions/RoleEnum"
            }
          ]
        },
        "active": {
          "type": "boolean"
        },
        "password": {
          "type": "string",
          "minLength": 8,
          "maxLength": 30,
          "pattern": "^(?=.{8,})(?=.*?[^\\w\\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*"
        },
        "emails": {
          "$ref": "#/definitions/UserEmailsArray"
        },
        "addresses": {
          "$ref": "#/definitions/UserAddressesArray"
        },
        "phoneNumbers": {
          "$ref": "#/definitions/UserPhoneNumbersArray"
        },
        "userType": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "preferredLanguage": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "locale": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "timezone": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "photos": {
          "$ref": "#/definitions/UserPhotosArray"
        },
        "meta": {
          "$ref": "#/definitions/UserMeta"
        },
        "title": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "groups": {
          "$ref": "#/definitions/UserGroupsArray"
        },
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "$ref": "#/definitions/EnterpriseExtension"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "$ref": "#/definitions/FdUserExtension"
        }
      }
    },
    "content-type": {
      "type": "string",
      "enum": [
        "image/png",
        "image/jpg",
        "image/jpeg"
      ]
    },
    "ImageHeaders": {
      "type": "object",
      "properties": {
        "content-type": {
          "$ref": "#/definitions/content-type"
        }
      },
      "required": [
        "content-type"
      ]
    },
    "ImageMeta": {
      "type": "object",
      "properties": {
        "headers": {
          "$ref": "#/definitions/ImageHeaders"
        }
      }
    },
    "ImageFile": {
      "type": "object",
      "properties": {
        "hapi": {
          "$ref": "#/definitions/ImageMeta"
        }
      }
    },
    "GroupLogoPayload": {
      "type": "object",
      "properties": {
        "image": {
          "$ref": "#/definitions/ImageFile"
        }
      }
    },
    "Model6": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "x-format": {
          "uri": true
        }
      }
    },
    "OAuthClientUpdate": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200
        },
        "description": {
          "type": "string",
          "maxLength": 500
        },
        "redirectUris": {
          "$ref": "#/definitions/Model6"
        },
        "privacyPolicyUrl": {
          "type": "string",
          "maxLength": 2048,
          "x-format": {
            "uri": {
              "scheme": [
                "https"
              ]
            }
          }
        },
        "termsOfServiceUrl": {
          "type": "string",
          "maxLength": 2048,
          "x-format": {
            "uri": {
              "scheme": [
                "https"
              ]
            }
          }
        },
        "developerContactEmail": {
          "type": "string",
          "maxLength": 254,
          "x-format": {
            "email": true
          }
        }
      },
      "required": [
        "name",
        "redirectUris"
      ]
    },
    "headers": {
      "type": "object",
      "properties": {
        "content-type": {
          "$ref": "#/definitions/content-type"
        }
      },
      "required": [
        "content-type"
      ]
    },
    "hapi": {
      "type": "object",
      "properties": {
        "headers": {
          "$ref": "#/definitions/headers"
        }
      }
    },
    "image": {
      "type": "object",
      "properties": {
        "hapi": {
          "$ref": "#/definitions/hapi"
        }
      }
    },
    "Model7": {
      "type": "object",
      "properties": {
        "image": {
          "$ref": "#/definitions/image"
        }
      }
    },
    "PatchOpSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
      ]
    },
    "PatchOpSchemasArray": {
      "type": "array",
      "minItems": 1,
      "maxItems": 1,
      "items": {
        "$ref": "#/definitions/PatchOpSchemaUrn"
      }
    },
    "PatchOpEnum": {
      "type": "string",
      "enum": [
        "add",
        "replace",
        "remove"
      ],
      "x-convert": {
        "case": "lower"
      }
    },
    "GroupPatchPathEnum": {
      "type": "string",
      "enum": [
        "externalId",
        "displayName",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group:description",
        "description",
        "members",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group:fql",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group:chatMethods",
        "fql"
      ]
    },
    "GroupPatchOperation": {
      "type": "object",
      "properties": {
        "op": {
          "$ref": "#/definitions/PatchOpEnum"
        },
        "path": {
          "$ref": "#/definitions/GroupPatchPathEnum"
        },
        "value": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "$ref": "#/x-alt-definitions/GroupResponse"
            },
            {
              "$ref": "#/x-alt-definitions/ChatMethods"
            },
            {
              "$ref": "#/x-alt-definitions/PatchGroupMembersArray"
            }
          ]
        }
      },
      "required": [
        "op",
        "value"
      ]
    },
    "GroupPatchOperationsArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/GroupPatchOperation"
      }
    },
    "PatchGroupRequest": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:PatchOp"
        ],
        "Operations": [
          {
            "op": "add",
            "path": "members",
            "value": [
              {
                "display": "Babs Jensen",
                "ref": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646",
                "value": "2819c223-7f76-453a-919d-413861904646"
              }
            ]
          },
          {
            "op": "replace",
            "path": "displayName",
            "value": "Tour Guides"
          },
          {
            "op": "remove",
            "path": "members",
            "value": [
              {
                "value": "902c246b-6245-4190-8e05-0018c3524c9a"
              }
            ]
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/PatchOpSchemasArray"
        },
        "Operations": {
          "$ref": "#/definitions/GroupPatchOperationsArray"
        }
      }
    },
    "UserPatchSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:scim:schemas:core:1.0",
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User",
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
      ]
    },
    "UserPatchSchemaUrnsArray": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "items": {
        "$ref": "#/definitions/UserPatchSchemaUrn"
      }
    },
    "op": {
      "type": "string",
      "enum": [
        "add",
        "replace",
        "remove"
      ],
      "x-convert": {
        "case": "lower"
      }
    },
    "PatchAttributeString": {
      "type": "object",
      "properties": {
        "display": {
          "type": "string"
        },
        "ref": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "PatchAttributeArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/PatchAttributeString"
      }
    },
    "UserPatchOperation": {
      "type": "object",
      "properties": {
        "op": {
          "$ref": "#/definitions/op"
        },
        "path": {
          "type": "string",
          "minLength": 5,
          "maxLength": 100
        },
        "value": {
          "$ref": "#/definitions/PatchAttributeArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/PatchAttributeArray"
            },
            {
              "$ref": "#/x-alt-definitions/UserResponse"
            },
            {
              "type": "string"
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "required": [
        "op"
      ]
    },
    "Operations": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/UserPatchOperation"
      }
    },
    "PatchUserRequest": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:api:messages:2.0:PatchOp"
        ],
        "Operations": [
          {
            "op": "replace",
            "value": {
              "active": false,
              "nickName": "Babs"
            }
          },
          {
            "op": "replace",
            "path": "name.givenName",
            "value": "Barbara"
          },
          {
            "op": "add",
            "path": "emails",
            "value": [
              {
                "value": "babs@jensen.org",
                "type": "home"
              }
            ]
          },
          {
            "op": "remove",
            "path": "phoneNumbers[type eq \"work\"]"
          }
        ]
      },
      "properties": {
        "schemas": {
          "$ref": "#/definitions/UserPatchSchemaUrnsArray"
        },
        "Operations": {
          "$ref": "#/definitions/Operations"
        }
      },
      "required": [
        "Operations"
      ]
    },
    "SCIMReference": {
      "type": "object",
      "description": "Reference to another resource (User or Group)",
      "properties": {
        "value": {
          "type": "string",
          "description": "Unique identifier of the resource"
        },
        "ref": {
          "type": "string",
          "description": "URI of the resource"
        },
        "display": {
          "type": "string",
          "description": "Display name of the resource"
        }
      }
    }
  },
  "x-alt-definitions": {
    "RoleEnum": {
      "type": "string",
      "enum": [
        "user",
        "admin"
      ]
    },
    "UserRole": {
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/x-alt-definitions/RoleEnum"
        },
        "display": {
          "$ref": "#/x-alt-definitions/RoleEnum"
        }
      }
    },
    "UserRolesArray": {
      "type": "array",
      "maxItems": 1,
      "items": {
        "$ref": "#/x-alt-definitions/UserRole"
      }
    },
    "AllowedOAuthClientsArray": {
      "type": "string",
      "enum": [
        "*"
      ]
    },
    "Model1": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100
      }
    },
    "UserSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:scim:schemas:core:1.0",
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User"
      ]
    },
    "UserSchemaUrnsArray": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "items": {
        "$ref": "#/x-alt-definitions/UserSchemaUrn"
      }
    },
    "UserName": {
      "type": "object",
      "properties": {
        "familyName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "givenName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "formatted": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        }
      }
    },
    "TypeEnum": {
      "type": "string",
      "enum": [
        "work",
        "home"
      ]
    },
    "UserEmail": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^.+\\@.+\\..+$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/TypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserEmailsArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/UserEmail"
      }
    },
    "UserAddress": {
      "type": "object",
      "properties": {
        "formatted": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        },
        "streetAddress": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "locality": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "region": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "postalCode": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "country": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "type": {
          "$ref": "#/x-alt-definitions/TypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserAddressesArray": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/UserAddress"
      }
    },
    "PhoneTypeEnum": {
      "type": "string",
      "enum": [
        "work",
        "home",
        "mobile"
      ]
    },
    "UserPhoneNumber": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45,
          "pattern": "^[ 0-9_./()*#+-]*$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/PhoneTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserPhoneNumbersArray": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "$ref": "#/x-alt-definitions/UserPhoneNumber"
      }
    },
    "PhotoTypeEnum": {
      "type": "string",
      "enum": [
        "thumbnail",
        "photo"
      ]
    },
    "UserPhoto": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/PhotoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserPhotosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/UserPhoto"
      }
    },
    "resourceType": {
      "type": "string",
      "enum": [
        "User"
      ]
    },
    "UserMeta": {
      "type": "object",
      "properties": {
        "resourceType": {
          "$ref": "#/x-alt-definitions/resourceType"
        },
        "created": {
          "type": "string",
          "maxLength": 30
        },
        "lastModified": {
          "type": "string",
          "maxLength": 30
        },
        "location": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        }
      }
    },
    "LogoTypeEnum": {
      "type": "string",
      "enum": [
        "thumbnail",
        "logo"
      ]
    },
    "UserGroupLogo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/LogoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "UserGroupLogosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/UserGroupLogo"
      }
    },
    "UserGroup": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "display": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "logos": {
          "$ref": "#/x-alt-definitions/UserGroupLogosArray"
        },
        "owner": {
          "type": "boolean"
        },
        "assignedByFilter": {
          "type": "boolean"
        }
      }
    },
    "UserGroupsArray": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/UserGroup"
      }
    },
    "EnterpriseManager": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        }
      }
    },
    "EnterpriseExtension": {
      "type": "object",
      "properties": {
        "employeeNumber": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "costCenter": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "organization": {
          "type": "string",
          "minLength": 0,
          "maxLength": 100
        },
        "division": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "department": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "manager": {
          "$ref": "#/x-alt-definitions/EnterpriseManager"
        }
      }
    },
    "CompanyLogo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/LogoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "CompanyLogosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/CompanyLogo"
      }
    },
    "ChatMethodEnum": {
      "type": "string",
      "enum": [
        "microsoftTeams",
        "googleChat",
        "slack"
      ]
    },
    "ChatMethodsEmailsWorkArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/x-alt-definitions/ChatMethodEnum"
      }
    },
    "ChatMethodsEmailsHomeArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/x-alt-definitions/ChatMethodEnum"
      }
    },
    "ChatMethodsUserNameArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/x-alt-definitions/ChatMethodEnum"
      }
    },
    "ChatMethodPhoneEnum": {
      "type": "string",
      "enum": [
        "whatsApp"
      ]
    },
    "ChatMethodsPhoneNumbersWorkArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/x-alt-definitions/ChatMethodPhoneEnum"
      }
    },
    "ChatMethodsPhoneNumbersHomeArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/x-alt-definitions/ChatMethodPhoneEnum"
      }
    },
    "ChatMethodsPhoneNumbersMobileArray": {
      "type": "array",
      "x-constraint": {},
      "items": {
        "$ref": "#/x-alt-definitions/ChatMethodPhoneEnum"
      }
    },
    "ChatMethods": {
      "type": "object",
      "properties": {
        "emailsWork": {
          "$ref": "#/x-alt-definitions/ChatMethodsEmailsWorkArray"
        },
        "emailsHome": {
          "$ref": "#/x-alt-definitions/ChatMethodsEmailsHomeArray"
        },
        "userName": {
          "$ref": "#/x-alt-definitions/ChatMethodsUserNameArray"
        },
        "phoneNumbersWork": {
          "$ref": "#/x-alt-definitions/ChatMethodsPhoneNumbersWorkArray"
        },
        "phoneNumbersHome": {
          "$ref": "#/x-alt-definitions/ChatMethodsPhoneNumbersHomeArray"
        },
        "phoneNumbersMobile": {
          "$ref": "#/x-alt-definitions/ChatMethodsPhoneNumbersMobileArray"
        }
      }
    },
    "ManagerChainEntryPhoto": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/PhotoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "ManagerChainEntryPhotosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/ManagerChainEntryPhoto"
      }
    },
    "ManagerChainEntry": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "directReportCount": {
          "type": "integer",
          "minimum": 0
        },
        "title": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "division": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "department": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "photos": {
          "$ref": "#/x-alt-definitions/ManagerChainEntryPhotosArray"
        }
      }
    },
    "ManagerChainItems": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/ManagerChainEntry"
      }
    },
    "ManagerChain": {
      "type": "object",
      "properties": {
        "items": {
          "$ref": "#/x-alt-definitions/ManagerChainItems"
        },
        "truncated": {
          "type": "boolean"
        }
      }
    },
    "FdUserExtension": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "minLength": 0,
          "maxLength": 250
        },
        "directoryId": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "companyId": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "companyLogos": {
          "$ref": "#/x-alt-definitions/CompanyLogosArray"
        },
        "custom01": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "custom02": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "custom03": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "chatMethods": {
          "$ref": "#/x-alt-definitions/ChatMethods"
        },
        "directReportCount": {
          "type": "integer",
          "minimum": 0
        },
        "managerChain": {
          "$ref": "#/x-alt-definitions/ManagerChain"
        }
      }
    },
    "UserResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:User",
          "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:User"
        ],
        "id": "c3a26dd3-27a0-4dec-a2ac-ce211e105f97",
        "externalId": "701984",
        "userName": "bjensen@example.com",
        "name": {
          "familyName": "Jensen",
          "givenName": "Barbara"
        },
        "displayName": "Barbara Jensen",
        "nickName": "Babs",
        "profileUrl": "https://login.example.com/bjensen",
        "emails": [
          {
            "value": "bjensen@example.com",
            "type": "work",
            "primary": true
          },
          {
            "value": "babs@jensen.org",
            "type": "home"
          }
        ],
        "addresses": [
          {
            "type": "work",
            "streetAddress": "100 Universal City Plaza",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
            "primary": true
          },
          {
            "type": "home",
            "streetAddress": "456 Hollywood Blvd",
            "locality": "Hollywood",
            "region": "CA",
            "postalCode": "91608",
            "country": "USA",
            "formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA"
          }
        ],
        "phoneNumbers": [
          {
            "value": "555-555-5555",
            "type": "work"
          },
          {
            "value": "555-555-4444",
            "type": "mobile"
          }
        ],
        "photos": [
          {
            "value": "https://photos.example.com/bjensen_photo.jpg",
            "type": "photo",
            "primary": true
          },
          {
            "value": "https://photos.example.com/bjensen_thumbnail.jpg",
            "type": "thumbnail"
          }
        ],
        "userType": "Employee",
        "title": "Tour Guide",
        "preferredLanguage": "en-US",
        "locale": "en-US",
        "timezone": "America/Los_Angeles",
        "active": true,
        "groups": [
          {
            "value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
            "ref": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
            "display": "Tour Guides"
          }
        ],
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "employeeNumber": "701984",
          "costCenter": "4130",
          "organization": "Universal Studios",
          "division": "Theme Park",
          "department": "Tour Operations",
          "manager": {
            "value": "26118915-6090-4610-87e4-49d8ca9f808d",
            "ref": "../v2/Users/26118915-6090-4610-87e4-49d8ca9f808d",
            "displayName": "John Smith"
          }
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "description": "Full time tour guide",
          "directoryId": "f819cbe8-5e6e-4c82-b8c6-a0d4a3fc5c27",
          "companyId": "a4a4e7f8-42cc-4f3e-bd3f-4c3a88e8e4f0",
          "custom01": "Badge Number: 12345",
          "directReportCount": 3
        },
        "meta": {
          "resourceType": "User",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Users/c3a26dd3-27a0-4dec-a2ac-ce211e105f97"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/x-alt-definitions/UserSchemaUrnsArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "name": {
          "$ref": "#/x-alt-definitions/UserName"
        },
        "userName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150,
          "pattern": "^.+\\@.+\\..+$"
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "nickName": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "profileUrl": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "roles": {
          "$ref": "#/definitions/UserRolesArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/UserRolesArray"
            },
            {
              "$ref": "#/x-alt-definitions/RoleEnum"
            }
          ]
        },
        "active": {
          "type": "boolean"
        },
        "password": {
          "type": "string",
          "minLength": 8,
          "maxLength": 30,
          "pattern": "^(?=.{8,})(?=.*?[^\\w\\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*"
        },
        "emails": {
          "$ref": "#/x-alt-definitions/UserEmailsArray"
        },
        "addresses": {
          "$ref": "#/x-alt-definitions/UserAddressesArray"
        },
        "phoneNumbers": {
          "$ref": "#/x-alt-definitions/UserPhoneNumbersArray"
        },
        "userType": {
          "type": "string",
          "minLength": 0,
          "maxLength": 150
        },
        "preferredLanguage": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "locale": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "timezone": {
          "type": "string",
          "minLength": 0,
          "maxLength": 45
        },
        "photos": {
          "$ref": "#/x-alt-definitions/UserPhotosArray"
        },
        "meta": {
          "$ref": "#/x-alt-definitions/UserMeta"
        },
        "title": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200
        },
        "groups": {
          "$ref": "#/x-alt-definitions/UserGroupsArray"
        },
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
          "$ref": "#/x-alt-definitions/EnterpriseExtension"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:User": {
          "$ref": "#/x-alt-definitions/FdUserExtension"
        }
      }
    },
    "BulkRequestDataGeneric": {
      "type": "object"
    },
    "Model2": {
      "type": "string",
      "enum": [
        "urn:ietf:params:scim:api:messages:2.0:Error"
      ]
    },
    "schemas": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/Model2"
      }
    },
    "ScimError": {
      "type": "object",
      "properties": {
        "schemas": {
          "$ref": "#/x-alt-definitions/schemas"
        },
        "status": {
          "type": "string"
        },
        "scimType": {
          "type": "string"
        },
        "detail": {
          "type": "string"
        }
      },
      "required": [
        "schemas",
        "status",
        "detail"
      ]
    },
    "jsonrpc": {
      "type": "string",
      "enum": [
        "2.0"
      ]
    },
    "method": {
      "type": "string",
      "enum": [
        "tools/call"
      ]
    },
    "McpToolArguments": {
      "type": "object",
      "description": "Arguments for the tool (matches tool inputSchema)"
    },
    "McpCallToolParams": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the tool to call"
        },
        "arguments": {
          "$ref": "#/x-alt-definitions/McpToolArguments"
        }
      },
      "required": [
        "name",
        "arguments"
      ]
    },
    "McpCallToolRequest": {
      "type": "object",
      "properties": {
        "jsonrpc": {
          "$ref": "#/x-alt-definitions/jsonrpc"
        },
        "method": {
          "$ref": "#/x-alt-definitions/method"
        },
        "params": {
          "$ref": "#/x-alt-definitions/McpCallToolParams"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "required": [
        "jsonrpc",
        "method",
        "params",
        "id"
      ]
    },
    "Model3": {
      "type": "string",
      "enum": [
        "tools/list"
      ]
    },
    "McpListToolsParams": {
      "type": "object"
    },
    "McpListToolsRequest": {
      "type": "object",
      "properties": {
        "jsonrpc": {
          "$ref": "#/x-alt-definitions/jsonrpc"
        },
        "method": {
          "$ref": "#/x-alt-definitions/Model3"
        },
        "params": {
          "$ref": "#/x-alt-definitions/McpListToolsParams"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "required": [
        "jsonrpc",
        "method",
        "id"
      ]
    },
    "Model4": {
      "type": "string",
      "enum": [
        "initialize"
      ]
    },
    "McpClientCapabilities": {
      "type": "object"
    },
    "McpClientInfo": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "version"
      ]
    },
    "McpInitializeParams": {
      "type": "object",
      "properties": {
        "protocolVersion": {
          "type": "string"
        },
        "capabilities": {
          "$ref": "#/x-alt-definitions/McpClientCapabilities"
        },
        "clientInfo": {
          "$ref": "#/x-alt-definitions/McpClientInfo"
        }
      },
      "required": [
        "protocolVersion",
        "clientInfo"
      ]
    },
    "McpInitializeRequest": {
      "type": "object",
      "properties": {
        "jsonrpc": {
          "$ref": "#/x-alt-definitions/jsonrpc"
        },
        "method": {
          "$ref": "#/x-alt-definitions/Model4"
        },
        "params": {
          "$ref": "#/x-alt-definitions/McpInitializeParams"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "required": [
        "jsonrpc",
        "method",
        "params",
        "id"
      ]
    },
    "Model5": {
      "type": "string",
      "enum": [
        "ping"
      ]
    },
    "McpPingParams": {
      "type": "object"
    },
    "McpPingRequest": {
      "type": "object",
      "properties": {
        "jsonrpc": {
          "$ref": "#/x-alt-definitions/jsonrpc"
        },
        "method": {
          "$ref": "#/x-alt-definitions/Model5"
        },
        "params": {
          "$ref": "#/x-alt-definitions/McpPingParams"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "required": [
        "jsonrpc",
        "method",
        "id"
      ]
    },
    "params": {
      "type": "object"
    },
    "JsonRpcRequest": {
      "type": "object",
      "properties": {
        "jsonrpc": {
          "$ref": "#/x-alt-definitions/jsonrpc"
        },
        "method": {
          "type": "string"
        },
        "params": {
          "$ref": "#/x-alt-definitions/params"
        },
        "id": {
          "type": "string",
          "x-alternatives": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        }
      },
      "required": [
        "jsonrpc",
        "method"
      ]
    },
    "JsonRpcBatchRequest": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/definitions/McpCallToolRequest",
        "x-alternatives": [
          {
            "$ref": "#/x-alt-definitions/McpCallToolRequest"
          },
          {
            "$ref": "#/x-alt-definitions/McpListToolsRequest"
          },
          {
            "$ref": "#/x-alt-definitions/McpInitializeRequest"
          },
          {
            "$ref": "#/x-alt-definitions/McpPingRequest"
          },
          {
            "$ref": "#/x-alt-definitions/JsonRpcRequest"
          },
          {
            "$ref": "#/x-alt-definitions/JsonRpcBatchRequest"
          }
        ]
      }
    },
    "GroupSchemaUrn": {
      "type": "string",
      "enum": [
        "urn:ietf:params:scim:schemas:core:2.0:Group",
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group"
      ]
    },
    "GroupSchemasArray": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "items": {
        "$ref": "#/x-alt-definitions/GroupSchemaUrn"
      }
    },
    "MemberPhotoTypeEnum": {
      "type": "string",
      "enum": [
        "thumbnail",
        "photo"
      ]
    },
    "MemberPhoto": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/MemberPhotoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "photos": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/MemberPhoto"
      }
    },
    "GroupRoleEnum": {
      "type": "string",
      "enum": [
        "member",
        "owner"
      ]
    },
    "GroupMember": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        },
        "display": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "photos": {
          "$ref": "#/x-alt-definitions/photos"
        },
        "groupRole": {
          "$ref": "#/x-alt-definitions/GroupRoleEnum"
        }
      }
    },
    "GroupMembersScimArray": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/GroupMember"
      }
    },
    "SharedAttributeEnum": {
      "type": "string",
      "enum": [
        "id",
        "userName",
        "externalId",
        "familyName",
        "givenName",
        "displayName",
        "nickName",
        "profileUrl",
        "emailsHome",
        "emailsWork",
        "streetAddressWork",
        "postalCodeWork",
        "localityWork",
        "regionWork",
        "countryWork",
        "streetAddressHome",
        "localityHome",
        "postalCodeHome",
        "regionHome",
        "countryHome",
        "phoneNumbersWork",
        "phoneNumbersHome",
        "phoneNumbersMobile",
        "photos",
        "userType",
        "title",
        "employeeNumber",
        "costCenter",
        "division",
        "department",
        "manager",
        "description",
        "custom01",
        "custom02",
        "custom03"
      ]
    },
    "SharedAttributesScimArray": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/SharedAttributeEnum"
      }
    },
    "Model6": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100
      }
    },
    "GroupLogo": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 0,
          "maxLength": 200,
          "pattern": "^(https?\\:\\/\\/(\\S+\\.[^/\\s]+(\\/\\S+|\\/|)))$"
        },
        "type": {
          "$ref": "#/x-alt-definitions/LogoTypeEnum"
        },
        "primary": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "GroupLogosArray": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "$ref": "#/x-alt-definitions/GroupLogo"
      }
    },
    "fqlon": {
      "type": "object"
    },
    "FdGroupExtension": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "minLength": 0,
          "maxLength": 250
        },
        "groupRole": {
          "$ref": "#/x-alt-definitions/GroupRoleEnum"
        },
        "assignedByFilter": {
          "type": "boolean"
        },
        "sharedAttributes": {
          "$ref": "#/x-alt-definitions/SharedAttributesScimArray"
        },
        "allowedOAuthClients": {
          "$ref": "#/definitions/AllowedOAuthClientsArray",
          "x-alternatives": [
            {
              "$ref": "#/x-alt-definitions/AllowedOAuthClientsArray"
            },
            {
              "$ref": "#/x-alt-definitions/Model6"
            }
          ]
        },
        "chatMethods": {
          "$ref": "#/x-alt-definitions/ChatMethods"
        },
        "logos": {
          "$ref": "#/x-alt-definitions/GroupLogosArray"
        },
        "fql": {
          "type": "string",
          "minLength": 0,
          "maxLength": 255
        },
        "fqlon": {
          "$ref": "#/x-alt-definitions/fqlon"
        }
      }
    },
    "GroupResponse": {
      "type": "object",
      "example": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:Group",
          "urn:ietf:params:scim:schemas:extension:fd:2.0:Group"
        ],
        "id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
        "displayName": "Tour Guides",
        "members": [
          {
            "value": "2819c223-7f76-453a-919d-413861904646",
            "ref": "https://api.federated.directory/v2/Users/2819c223-7f76-453a-919d-413861904646",
            "display": "Babs Jensen",
            "groupRole": "owner",
            "photos": [
              {
                "value": "https://photos.example.com/bjensen_photo.jpg",
                "type": "photo"
              },
              {
                "value": "https://photos.example.com/bjensen_thumbnail.jpg",
                "type": "thumbnail"
              }
            ]
          },
          {
            "value": "902c246b-6245-4190-8e05-0018c3524c9a",
            "ref": "https://api.federated.directory/v2/Users/902c246b-6245-4190-8e05-0018c3524c9a",
            "display": "Mandy Pepperidge",
            "groupRole": "member",
            "photos": [
              {
                "value": "https://photos.example.com/mandy_photo.jpg",
                "type": "photo"
              }
            ]
          }
        ],
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
          "description": "All certified tour guides",
          "groupRole": "owner",
          "assignedByFilter": false,
          "sharedAttributes": [
            "displayName",
            "title",
            "photos",
            "department"
          ],
          "logos": [
            {
              "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/logo.jpg",
              "type": "logo",
              "primary": true
            },
            {
              "value": "https://cdn.example.com/groups/e9e30dba-f08f-4109-8486-d5c6a331660a/thumb/logo.jpg",
              "type": "thumbnail"
            }
          ],
          "fql": null
        },
        "meta": {
          "resourceType": "Group",
          "created": "2023-01-23T04:56:22Z",
          "lastModified": "2023-05-13T11:05:29Z",
          "location": "https://api.federated.directory/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a"
        }
      },
      "properties": {
        "schemas": {
          "$ref": "#/x-alt-definitions/GroupSchemasArray"
        },
        "id": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "externalId": {
          "type": "string",
          "minLength": 0,
          "maxLength": 70
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "members": {
          "$ref": "#/x-alt-definitions/GroupMembersScimArray"
        },
        "urn:ietf:params:scim:schemas:extension:fd:2.0:Group": {
          "$ref": "#/x-alt-definitions/FdGroupExtension"
        }
      }
    },
    "PatchGroupMember": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "x-format": {
            "guid": true
          }
        },
        "ref": {
          "type": "string",
          "minLength": 0,
          "maxLength": 300
        },
        "display": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "photos": {
          "$ref": "#/x-alt-definitions/photos"
        },
        "groupRole": {
          "$ref": "#/x-alt-definitions/GroupRoleEnum"
        }
      }
    },
    "PatchGroupMembersArray": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/PatchGroupMember"
      }
    },
    "PatchAttributeString": {
      "type": "object",
      "properties": {
        "display": {
          "type": "string"
        },
        "ref": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "PatchAttributeArray": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/PatchAttributeString"
      }
    }
  }
}