{
  "openapi": "3.0.0",
  "info": {
    "title": "Deeper Signals Public API",
    "version": "1.0.0",
    "description": "The Deeper Signals public API lets you manage the people on your account, invite them to assessments, read their results and control and download their reports.\n\n**Base URL** `https://api.deepersignals.com/api/external` · **Authentication** account API token in the `X-TOKEN` header · **Format** JSON\n\nStart with the [guides](/) for the end-to-end flows (campaigns, reports, SSO, webhooks); this reference documents every endpoint and is generated from the API's OpenAPI specification, so it always matches the deployed code.\n",
    "contact": {
      "name": "Deeper Signals support",
      "url": "https://www.deepersignals.com",
      "email": "support@deepersignals.com"
    }
  },
  "servers": [
    {
      "url": "https://api.deepersignals.com",
      "description": "Production"
    }
  ],
  "security": [
    {
      "ApiToken": []
    }
  ],
  "tags": [
    {
      "name": "Users",
      "description": "Create, read, update and delete the people on your account, and query them as a table."
    },
    {
      "name": "Campaigns",
      "description": "Invite people to assessments through campaigns, and read who has signed up or completed."
    },
    {
      "name": "Participant assessments",
      "description": "Which assessments a participant has, and assigning or unassigning them."
    },
    {
      "name": "Participant reports",
      "description": "Which reports a participant can see on the platform, and switching them on or off."
    },
    {
      "name": "Assessments & reports",
      "description": "Catalog of assessments and reports, PDF downloads and public share links."
    },
    {
      "name": "Teams",
      "description": "Teams (manager plus members), their scores and team reports."
    },
    {
      "name": "Playbooks",
      "description": "Reusable onboarding recipes used by SSO and SAML sign-in."
    }
  ],
  "paths": {
    "/api/external/assessment_libraries": {
      "get": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "List the assessments enabled on the account",
        "operationId": "get-assessment-libraries",
        "responses": {
          "200": {
            "description": "Assessment libraries",
            "content": {
              "application/json": {
                "example": [
                  {
                    "id": 21,
                    "name": "Core Values",
                    "scoring_service": "beliefs",
                    "user_report_libraries": [
                      {
                        "id": 27,
                        "name": "Core Values"
                      }
                    ]
                  },
                  {
                    "id": 24,
                    "name": "Core Drivers",
                    "scoring_service": "core_drivers_leadership",
                    "user_report_libraries": [
                      {
                        "id": 6,
                        "name": "Core Drivers Pro"
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "The account's assessment libraries with the participant reports active on the account.\n\nEach assessment library carries the reports (`user_report_libraries`) it feeds. Use the ids with campaigns, playbooks and the participant assessment endpoints.",
        "parameters": []
      }
    },
    "/api/external/campaigns": {
      "post": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Create a campaign",
        "operationId": "post-campaigns",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInviteCampaignActionRequestBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteCampaign"
                }
              }
            }
          },
          "403": {
            "description": "An assessment library or report is not enabled on the account, or the settings need a platform administrator"
          },
          "422": {
            "description": "Validation failed"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Create a campaign with the admin create form. Nobody is invited yet: add people with POST .../users or invite them with POST .../invitations.",
        "parameters": []
      }
    },
    "/api/external/campaigns/{campaign_id}": {
      "get": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Get a campaign",
        "operationId": "get-campaigns-campaign",
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteCampaign"
                }
              }
            }
          },
          "403": {
            "description": "Campaign outside the account"
          },
          "404": {
            "description": "Unknown campaign"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "One campaign in the admin shape, plus `invite_link_template` (plug `invite_token` in for the shareable sign-up link) and `progress` counts."
      }
    },
    "/api/external/campaigns/{campaign_id}/invitations": {
      "post": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Send invitations",
        "operationId": "post-campaigns-campaign-invitations",
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalCampaignRecipientsRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "`affected_count`, `queued: false`, `skipped` [{identifier, user_id, reason}]",
            "content": {
              "application/json": {
                "example": {
                  "affected_count": 2,
                  "queued": false,
                  "skipped": [
                    {
                      "identifier": "john.roe@example.com",
                      "user_id": 2042,
                      "reason": "completed"
                    }
                  ]
                }
              }
            }
          },
          "202": {
            "description": "Invitations queued and sent in the background (`queued: true`)"
          },
          "403": {
            "description": "Campaign outside the account"
          },
          "404": {
            "description": "Unknown campaign"
          },
          "422": {
            "description": "No recipient, more than 100 recipients, or an invalid e-mail"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Add people and e-mail them the campaign invitation. Repeat for an existing participant to send it again. More than 10 recipients is queued (202)."
      }
    },
    "/api/external/campaigns/{campaign_id}/users": {
      "post": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Add participants",
        "operationId": "post-campaigns-campaign-users",
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalCampaignRecipientsRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "`added` [{user_id, email, was_new_user}] and `skipped` [{identifier, user_id, reason}]",
            "content": {
              "application/json": {
                "example": {
                  "added": [
                    {
                      "user_id": 2041,
                      "email": "jane.doe@example.com",
                      "was_new_user": true
                    }
                  ],
                  "skipped": [
                    {
                      "identifier": "john.roe@example.com",
                      "user_id": 2042,
                      "reason": "already_recipient"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Campaign outside the account"
          },
          "404": {
            "description": "Unknown campaign"
          },
          "422": {
            "description": "No recipient, more than 100 recipients, or an invalid e-mail"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Add people to the campaign without sending anything. Assigns the campaign's assessments; an e-mail with no user on the account creates one. Answers who was added (`was_new_user`) and who was skipped with a reason."
      }
    },
    "/api/external/campaigns/{campaign_id}/users/{user_id}": {
      "delete": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Remove a participant",
        "operationId": "delete-campaigns-campaign-users-user",
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "`affected_count` and `skipped` [{identifier, user_id, reason}]",
            "content": {
              "application/json": {
                "example": {
                  "affected_count": 1,
                  "skipped": []
                }
              }
            }
          },
          "403": {
            "description": "Campaign or user outside the account"
          },
          "404": {
            "description": "Unknown campaign or participant"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Remove a participant who has not started. Answers the same outcome as the admin bulk removal: `affected_count` 1 when removed, 0 with a `skipped` reason (`not_a_recipient`, `not_removable`) otherwise."
      }
    },
    "/api/external/campaigns/{campaign_id}/users/table": {
      "post": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Query participants as a table",
        "operationId": "post-campaigns-campaign-users-table",
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalTableRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rows keyed by column, the total, and invite_link_template",
            "content": {
              "application/json": {
                "example": {
                  "items": [
                    {
                      "users.id": 2041,
                      "users.email": "jane.doe@example.com",
                      "users.first_name": "Jane",
                      "users.last_name": "Doe",
                      "users.invite_campaign_user.status": "SIGNED_UP",
                      "users.invite_campaign_user.token": "c71e9a..."
                    }
                  ],
                  "total": 1,
                  "pages": 1,
                  "invite_link_template": "https://app.deepersignals.com/auth/verify/campaign/{token}?account=examplecorp"
                }
              }
            }
          },
          "400": {
            "description": "Invalid pagination, including the applicable constraints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPaginationErrorResponseBody"
                }
              }
            }
          },
          "403": {
            "description": "Campaign outside the account"
          },
          "404": {
            "description": "Unknown campaign"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "The campaign's participants as a user table (filters, sort, pagination as for /external/users/table). The `users.invite_campaign_user.token` column is the participant's personal invite token; plugged into `invite_link_template` it is the sign-in link the invitation e-mail sends. Delivering it yourself leaves `email_status` untouched."
      }
    },
    "/api/external/campaigns/columns": {
      "get": {
        "tags": [
          "Campaigns"
        ],
        "summary": "List the columns for campaign table queries",
        "operationId": "get-campaigns-columns",
        "responses": {
          "default": {
            "description": "Columns"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "parameters": []
      }
    },
    "/api/external/campaigns/table": {
      "post": {
        "tags": [
          "Campaigns"
        ],
        "summary": "Query campaigns as a table",
        "operationId": "post-campaigns-table",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalTableRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rows keyed by column, with the total"
          },
          "400": {
            "description": "Invalid pagination, including the applicable constraints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPaginationErrorResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "The account's campaigns as a table: columns, filters, sort and pagination as for /external/users/table.",
        "parameters": []
      }
    },
    "/api/external/locales": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List enabled locales",
        "operationId": "get-locales",
        "responses": {
          "200": {
            "description": "Enabled locales",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Locale"
                  }
                },
                "example": [
                  {
                    "code": "en",
                    "name": "English",
                    "right_to_left": false
                  },
                  {
                    "code": "de",
                    "name": "Deutsch",
                    "right_to_left": false
                  },
                  {
                    "code": "es-419",
                    "name": "Español (Latinoamérica)",
                    "right_to_left": false
                  }
                ]
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "The locales a user can be created or updated with: the platform's enabled locales, as the sign-in app lists them.\n\nThe locales a user can be created or updated with (`locale` on `POST /user` and `PATCH /users/{user_id}`) and that reports and share links can be rendered in. `code` is what you pass; `name` is the display name; `right_to_left` marks RTL scripts.",
        "parameters": []
      }
    },
    "/api/external/pdf/team/{team_id}/report/{report_type}/locale/{locale}/download": {
      "get": {
        "tags": [
          "Teams"
        ],
        "operationId": "get-pdf-team-team-report-report-type-locale-locale-download",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "report_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "[a-z_]+"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download file metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadRequestResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "deprecated": true,
        "summary": "Download a team report as PDF (by report type, legacy)",
        "description": "Superseded by the report-library route. Kept for existing integrations."
      }
    },
    "/api/external/pdf/team/{team_id}/report/{user_report_library_id}/locale/{locale}/download": {
      "get": {
        "tags": [
          "Teams"
        ],
        "operationId": "get-pdf-team-team-report-user-report-library-locale-locale-download",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_report_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download file metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadRequestResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Download a team report as PDF",
        "description": "Streams `application/pdf`."
      }
    },
    "/api/external/pdf/v2/user-report/{assigned_user_report_id}/download/{locale}": {
      "get": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "Download a user's report PDF by assigned-report id",
        "operationId": "get-pdf-v2-user-report-assigned-user-report-download-locale",
        "parameters": [
          {
            "name": "assigned_user_report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Pdf File"
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "`assigned_user_report_id` comes from `GET /users/{user_id}/results` or the `AssignedAssessmentFinished` webhook. The `/{locale}` segment is optional; without it the report is in English."
      }
    },
    "/api/external/pdf/v2/user/{user_id}/{assessment_library_id}/download/{locale}": {
      "get": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "Download a user's report PDF by assessment library",
        "description": "Resolves the assessment's main report; the report must be visible to the user. Prefer `GET /pdf/v2/user/{user_id}/report/{user_report_library_id}/download/{locale}`, which also works for hidden reports. The `/{locale}` segment is optional; without it the report is in English.",
        "operationId": "get-pdf-v2-user-user-assessment-library-download-locale",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assessment_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Pdf File"
          },
          "404": {
            "description": "Participant, library or assignment not found"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      }
    },
    "/api/external/pdf/v2/user/{user_id}/report/{user_report_library_id}/download/{locale}": {
      "get": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "Download a user's report PDF",
        "description": "Download a participant's report whether or not it is assigned (visible) to them.\n\nDownloading never assigns the report or notifies the participant. 409 lists the\nassessment libraries the participant still has to complete.",
        "operationId": "get-pdf-v2-user-user-report-user-report-library-download-locale",
        "parameters": [
          {
            "name": "user_report_library_id",
            "in": "path",
            "description": "Report id from GET /external/reports",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "description": "Report language. Optional: the same URL without `/{locale}` downloads the English report.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "en"
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Pdf File"
          },
          "403": {
            "description": "Participant outside the account, or report not available on it"
          },
          "404": {
            "description": "Unknown participant or report"
          },
          "409": {
            "description": "Required assessments not completed; data.pending_assessment_library_ids lists them"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      }
    },
    "/api/external/playbook": {
      "get": {
        "tags": [
          "Playbooks"
        ],
        "summary": "List playbooks",
        "description": "Every playbook of the account with its `identity`, the value used in the SSO JWT `identity` claim or as SAML relay state. See [Playbooks](/guides/playbooks).",
        "operationId": "get-playbook",
        "responses": {
          "200": {
            "description": "Successfully retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Playbook"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "parameters": []
      }
    },
    "/api/external/playbook/{playbook_id}": {
      "put": {
        "tags": [
          "Playbooks"
        ],
        "summary": "Update a playbook",
        "description": "This endpoint is only used by external API clients",
        "operationId": "put-playbook-playbook",
        "parameters": [
          {
            "name": "playbook_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlaybookRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Playbook"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Playbooks"
        ],
        "summary": "Delete a playbook",
        "description": "This endpoint is only used by external API clients",
        "operationId": "delete-playbook-playbook",
        "parameters": [
          {
            "name": "playbook_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      }
    },
    "/api/external/playbook/create": {
      "post": {
        "tags": [
          "Playbooks"
        ],
        "summary": "Create a playbook",
        "description": "This endpoint is only used by external API clients",
        "operationId": "post-playbook-create",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlaybookRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The playbook with its generated identity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Playbook"
                },
                "example": {
                  "id": 4,
                  "name": "New hires 2026",
                  "identity": "60ae0168f2eb7",
                  "assessment_libraries": [
                    {
                      "id": 24,
                      "name": "Core Drivers"
                    }
                  ],
                  "user_report_libraries": [
                    {
                      "id": 6,
                      "name": "Core Drivers Pro"
                    }
                  ],
                  "usergroups": [
                    {
                      "id": 135,
                      "name": "Sales"
                    }
                  ],
                  "projects": [
                    {
                      "id": 1,
                      "name": "Onboarding"
                    }
                  ],
                  "default_for_login": false,
                  "account": {
                    "id": 1,
                    "name": "Example Corp",
                    "index_name": "examplecorp"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Missing required parameters"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "parameters": []
      }
    },
    "/api/external/reports": {
      "get": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "List reports",
        "description": "The ids are what the per-participant report endpoints take. Unlike\nGET /external/assessment_libraries this also lists multi-library reports.",
        "operationId": "get-reports",
        "responses": {
          "200": {
            "description": "User reports active on the account, team reports excluded",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalReportResponseBody"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "parameters": []
      }
    },
    "/api/external/share/token/team/{team_id}/report/{report_type}/locale/{locale}": {
      "get": {
        "tags": [
          "Teams"
        ],
        "operationId": "get-share-token-team-team-report-report-type-locale-locale",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "report_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "[a-z_]+"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "[a-z]{2}(-([A-Z]{2}|\\d{3}))?"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Team report token and public URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalShareTokenResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "deprecated": true,
        "summary": "Create a share link for a team report (by report type, legacy)",
        "description": "Superseded by the report-library route. Kept for existing integrations."
      }
    },
    "/api/external/share/token/team/{team_id}/report/{user_report_library_id}/locale/{locale}": {
      "get": {
        "tags": [
          "Teams"
        ],
        "operationId": "get-share-token-team-team-report-user-report-library-locale-locale",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_report_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "[a-z]{2}(-([A-Z]{2}|\\d{3}))?"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Token and URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalShareTokenResponseBody"
                },
                "example": {
                  "token": "2a2f051747b45969d399cb7eb24f00b4c1b9e672"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Create a share link for a team report"
      }
    },
    "/api/external/share/v2/token/user-report/{locale}": {
      "post": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "Create a share link for a user's report",
        "operationId": "post-share-v2-token-user-report-locale",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "description": "Locale",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "en"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserReportShareTokenRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token and URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalShareTokenResponseBody"
                },
                "example": {
                  "token": "676e6f35cfc173f73fea9fe27699cf8185397f0c",
                  "url": "https://app.deepersignals.com/examplecorp/share/676e6f35cfc173f73fea9fe27699cf8185397f0c",
                  "locale": "en"
                }
              }
            }
          },
          "422": {
            "description": "Missing Required Parameters"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      }
    },
    "/api/external/share/v2/token/user/assessment-report/{locale}": {
      "post": {
        "tags": [
          "Assessments & reports"
        ],
        "summary": "Create a share link by assessment library",
        "operationId": "post-share-v2-token-user-assessment-report-locale",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "description": "Locale",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "en"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserAssessmentReportShareTokenRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Share token and public URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalShareTokenResponseBody"
                }
              }
            }
          },
          "404": {
            "description": "Participant has no assignment or report for the library"
          },
          "422": {
            "description": "Missing Required Parameters"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      }
    },
    "/api/external/team": {
      "post": {
        "tags": [
          "Teams"
        ],
        "operationId": "post-team",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTeamRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created team",
            "content": {
              "application/json": {
                "example": {
                  "id": 555,
                  "name": "Sales EMEA",
                  "manager": {
                    "id": 500001,
                    "email": "jane.doe@example.com",
                    "first_name": "Jane",
                    "last_name": "Doe"
                  },
                  "members": [
                    {
                      "id": 500002,
                      "email": "john.roe@example.com",
                      "first_name": "John",
                      "last_name": "Roe"
                    }
                  ],
                  "visible_to_manager": false,
                  "visible_to_member": false,
                  "show_results": false
                }
              }
            }
          },
          "422": {
            "description": "Missing required parameters."
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Create a team",
        "description": "`manager` and `members` are user ids. The visibility flags control who sees the team report on the platform.",
        "parameters": []
      }
    },
    "/api/external/team/{team_id}": {
      "put": {
        "tags": [
          "Teams"
        ],
        "operationId": "put-team-team",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTeamRequestBody"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "The updated team"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Update a team"
      },
      "delete": {
        "tags": [
          "Teams"
        ],
        "operationId": "delete-team-team",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Deleted (204)"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Delete a team"
      }
    },
    "/api/external/team/{team_id}/members/table": {
      "post": {
        "tags": [
          "Teams"
        ],
        "operationId": "post-team-team-members-table",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalTableRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rows keyed by column",
            "content": {
              "application/json": {
                "example": {
                  "items": [
                    {
                      "users.id": 500000,
                      "users.email": "john.roe@example.com",
                      "users.first_name": "John",
                      "users.last_name": "Roe",
                      "users.display_status": "Active User",
                      "users.team_coaching_user.team_manager": 0
                    }
                  ],
                  "total": 1,
                  "pages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid pagination, including the applicable constraints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPaginationErrorResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Query the members of a team as a table",
        "description": "Same request body as `POST /users/table`; user columns apply. Each row also carries `users.team_coaching_user.team_manager` (1 for the manager)."
      }
    },
    "/api/external/team/{team_id}/members/table/count": {
      "post": {
        "tags": [
          "Teams"
        ],
        "operationId": "post-team-team-members-table-count",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalTableRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Total and page count",
            "content": {
              "application/json": {
                "example": {
                  "total": 12,
                  "pages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid pagination, including the applicable constraints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPaginationErrorResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Count the members of a team for a table query"
      }
    },
    "/api/external/team/{team_id}/scores": {
      "get": {
        "tags": [
          "Teams"
        ],
        "operationId": "get-team-team-scores",
        "parameters": [
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Team scores",
            "content": {
              "application/json": {
                "example": {
                  "team_name": "Sales EMEA",
                  "manager": "jane.doe@example.com",
                  "team_drive": 81.39,
                  "team_openness": 90.86,
                  "team_stability": 13.55,
                  "team_extraversion": 81.68,
                  "team_agreeableness": 40.96,
                  "team_conscientiousness": 10.69,
                  "manager_and_team_drive": 76.85,
                  "manager_and_team_openness": 82.45
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Get a team's aggregated scores",
        "description": "Team-level scales for the team's members, and for members plus manager."
      }
    },
    "/api/external/team/columns": {
      "get": {
        "tags": [
          "Teams"
        ],
        "operationId": "get-team-columns",
        "responses": {
          "default": {
            "description": "Columns",
            "content": {
              "application/json": {
                "example": {
                  "columns": {
                    "team_coaching.id": {
                      "type": "numeric",
                      "col_display_name": "Team id"
                    },
                    "team_coaching.name": {
                      "type": "keyword",
                      "col_display_name": "Team name"
                    },
                    "team_coaching.users.full_name": {
                      "type": "name",
                      "col_display_name": "Manager"
                    },
                    "team_coaching.team_members.count": {
                      "type": "numeric",
                      "col_display_name": "Members"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "List the columns for team table queries",
        "parameters": []
      }
    },
    "/api/external/team/table": {
      "post": {
        "tags": [
          "Teams"
        ],
        "operationId": "post-team-table",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalTableRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rows keyed by column",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTeamResponseBody"
                },
                "example": {
                  "items": [
                    {
                      "team_coaching.id": 336,
                      "team_coaching.name": "Finance",
                      "team_coaching.users.full_name": "Olivia Garcia",
                      "team_coaching.team_members.count": 2
                    }
                  ],
                  "total": 1,
                  "pages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid pagination, including the applicable constraints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPaginationErrorResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Query teams as a table",
        "description": "Same request body as `POST /users/table`; columns from `GET /team/columns`.",
        "parameters": []
      }
    },
    "/api/external/user": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create a user",
        "operationId": "post-user",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateExternalUserRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created user",
            "content": {
              "application/json": {
                "example": {
                  "id": 15768,
                  "email": "jane.doe@example.com",
                  "roles": [
                    "ROLE_USER"
                  ],
                  "first_name": "Jane",
                  "last_name": "Doe",
                  "active": true,
                  "created_at": "2026-10-01 10:43:34",
                  "locale": "en",
                  "employee_id": "EMP-1042",
                  "groups": [
                    "Sales"
                  ],
                  "account": {
                    "id": 999,
                    "name": "Example Corp",
                    "index_name": "examplecorp"
                  }
                }
              }
            }
          },
          "400": {
            "description": "E-mail missing or invalid, or the e-mail (`exception.email.taken`) or employee id (`exception.user.employeeIdTaken`) is already used on the account"
          },
          "422": {
            "description": "Request shape invalid (names, tags, locale, employee id)"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Creates a user on the account. No assessment is assigned: invite the person through a [campaign](/guides/campaigns) or assign one with `PUT /users/{user_id}/assessments/{assessment_library_id}`. Fires the `UserCreated` webhook.",
        "parameters": []
      }
    },
    "/api/external/user/email/{email}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a user by e-mail",
        "operationId": "get-user-email-email",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "URL-encoded e-mail address"
          }
        ],
        "responses": {
          "default": {
            "description": "The user"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Same shape as `GET /users/{user_id}`. `404` when no user of the account has this address."
      }
    },
    "/api/external/user/employee-id/{employee_id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "get-user-employee-id-employee-id",
        "parameters": [
          {
            "name": "employee_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "The user"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Get a user by employee id",
        "description": "Looks the user up by the employee id set through SCIM (`externalId`), the CSV import or `PATCH /users/{user_id}`. Same shape as `GET /users/{user_id}`."
      }
    },
    "/api/external/users/{user_id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a user",
        "operationId": "get-users-user",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "The user",
            "content": {
              "application/json": {
                "example": {
                  "id": 15768,
                  "email": "jane.doe@example.com",
                  "roles": [
                    "ROLE_USER"
                  ],
                  "first_name": "Jane",
                  "last_name": "Doe",
                  "active": true,
                  "created_at": "2026-10-01 10:43:34",
                  "updated_at": "2026-10-02 08:00:00",
                  "status": "NORMAL",
                  "display_status": "Active User",
                  "emailVerified": true,
                  "last_login_at": "2026-10-02 08:00:00",
                  "locale": "en",
                  "employee_id": "EMP-1042",
                  "groups": [
                    "Sales"
                  ],
                  "account": {
                    "id": 999,
                    "name": "Example Corp",
                    "index_name": "examplecorp",
                    "whitelabel": false
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "The user with profile, account, status and groups."
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Delete a user",
        "operationId": "delete-users-user",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Deleted (204)"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Removes the user and their results from the account. Fires the `UserDeleted` webhook. Prefer `PATCH` with `active: false` to keep results."
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Update a user",
        "operationId": "patch-users-user",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateExternalUserRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated user, same shape as GET /external/users/{user}"
          },
          "400": {
            "description": "E-mail (`exception.email.taken`) or employee id (`exception.user.employeeIdTaken`) already used on the account"
          },
          "403": {
            "description": "User outside the account, or an API/developer user"
          },
          "404": {
            "description": "Unknown user"
          },
          "422": {
            "description": "Validation failed or no field supplied"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Update a user: names, e-mail, locale, employee id, active flag and tags. Partial; omitted fields are left alone."
      }
    },
    "/api/external/users/{user_id}/assessments": {
      "get": {
        "tags": [
          "Participant assessments"
        ],
        "summary": "List a user's assessments",
        "operationId": "get-users-user-assessments",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The participant's assignments, oldest first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalParticipantAssessmentResponseBody"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Participant outside the account"
          },
          "404": {
            "description": "Unknown participant"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Every assessment assigned to the participant with its status."
      }
    },
    "/api/external/users/{user_id}/assessments/{assessment_library_id}": {
      "get": {
        "tags": [
          "Participant assessments"
        ],
        "summary": "Get an assessment",
        "operationId": "get-users-user-assessments-assessment-library",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "assessment_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalParticipantAssessmentResponseBody"
                }
              }
            }
          },
          "404": {
            "description": "The participant is not assigned this library"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      },
      "put": {
        "tags": [
          "Participant assessments"
        ],
        "summary": "Assign an assessment",
        "operationId": "put-users-user-assessments-assessment-library",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "assessment_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Already assigned: the shared bulk outcome with one `already_assigned` entry"
          },
          "201": {
            "description": "Assignment created: the shared bulk outcome with one `assigned` entry"
          },
          "403": {
            "description": "Participant outside the account or not visible to the token, or library not enabled on the account"
          },
          "404": {
            "description": "Unknown participant or assessment library"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Assign the assessment library to the participant. Idempotent: 201 when the assignment was created, 200 when it already existed. Sends no e-mail."
      },
      "delete": {
        "tags": [
          "Participant assessments"
        ],
        "summary": "Unassign an assessment",
        "operationId": "delete-users-user-assessments-assessment-library",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "assessment_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Assignment removed or absent"
          },
          "403": {
            "description": "Participant outside the account"
          },
          "404": {
            "description": "Unknown participant or assessment library"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Remove the assignment and the scores only it produced. Idempotent: 204 whether or not it existed."
      }
    },
    "/api/external/users/{user_id}/competency-score": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "get-users-user-competency-score",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Competency scores",
            "content": {
              "application/json": {
                "example": {
                  "competency": {
                    "delivers_results_61e8459077af8": 44.58,
                    "open_to_feedback_61e86e8e4679b": 51.76,
                    "drives_innovation_61e86d86bb5ba": 56.93
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Get a user's competency scores",
        "description": "Scores for each competency of the account's competency model, keyed by competency identifier. Empty when the account has no competencies or the user has not completed the required assessments."
      }
    },
    "/api/external/users/{user_id}/reports": {
      "get": {
        "tags": [
          "Participant reports"
        ],
        "summary": "List a user's reports",
        "operationId": "get-users-user-reports",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Account reports with per-participant visibility",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalParticipantReportResponseBody"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Participant outside the account"
          },
          "404": {
            "description": "Unknown participant"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Every report available on the account with its visibility and readiness for this participant."
      }
    },
    "/api/external/users/{user_id}/reports/{user_report_library_id}": {
      "get": {
        "tags": [
          "Participant reports"
        ],
        "summary": "Get a report's visibility",
        "operationId": "get-users-user-reports-user-report-library",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_report_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Report status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalParticipantReportResponseBody"
                }
              }
            }
          },
          "403": {
            "description": "Participant outside the account, or report not available on it"
          },
          "404": {
            "description": "Unknown participant or report"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      },
      "put": {
        "tags": [
          "Participant reports"
        ],
        "summary": "Make a report visible",
        "description": "Make the report visible to the participant. Idempotent; the change shows on the platform at once.\n\nA single-library report needs its assessment assigned to the participant first; otherwise the\ncall answers 404 `exception.assignedAssessment.notFound` and changes nothing. A multi-library\nreport can be switched on at any time. Either stays pending (`ready: false`) until the\nparticipant completes the assessments it needs.",
        "operationId": "put-users-user-reports-user-report-library",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_report_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Report was already visible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalParticipantReportResponseBody"
                }
              }
            }
          },
          "201": {
            "description": "Report switched on",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalParticipantReportResponseBody"
                }
              }
            }
          },
          "403": {
            "description": "Participant outside the account, or report not available on it"
          },
          "404": {
            "description": "Unknown participant or report, or (`exception.assignedAssessment.notFound`) the participant is not assigned the assessment of a single-library report"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Participant reports"
        ],
        "summary": "Hide a report",
        "operationId": "delete-users-user-reports-user-report-library",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_report_library_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Report hidden from the participant"
          },
          "403": {
            "description": "Participant outside the account, or report not available on it"
          },
          "404": {
            "description": "Unknown participant or report"
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Hide the report from the participant. Idempotent. Results and the API download stay available."
      }
    },
    "/api/external/users/{user_id}/results": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "get-users-user-results",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "User and assessments",
            "content": {
              "application/json": {
                "example": {
                  "user": {
                    "user_id": 28663,
                    "first_name": "Jane",
                    "last_name": "Doe",
                    "email": "jane.doe@example.com",
                    "gender": "N/A",
                    "company": "N/A",
                    "groups": [
                      "sales"
                    ],
                    "projects": [],
                    "status": "NORMAL",
                    "locale": "en",
                    "country": {
                      "country_id": 89,
                      "country": "Croatia"
                    }
                  },
                  "userAssignedAssessments": [
                    {
                      "assessment": {
                        "name": "Core Drivers",
                        "id": 49344,
                        "assessment_library_id": 24,
                        "score_type": "core_drivers_leadership",
                        "reports": [
                          {
                            "assigned_user_report": {
                              "id": 33005,
                              "userReportName": "Core Drivers Pro"
                            }
                          }
                        ]
                      },
                      "scales": {
                        "Drive": 74.83,
                        "Drive//Leading": 72.54,
                        "Openness": 38.26,
                        "Stability": 43.06,
                        "Extraversion": 36.8,
                        "Agreeableness": 34.86,
                        "Conscientiousness": 11.43
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Get a user with the scores of every completed assessment",
        "description": "Scales are keyed by scale name; `Parent//Child` keys are sub-scales and differ per assessment (`score_type`). `reports` lists the reports visible to the person, whose `assigned_user_report.id` can be used for PDFs and share links. See [Assessments & reports](/guides/assessments-and-reports)."
      }
    },
    "/api/external/users/columns": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "get-users-columns",
        "responses": {
          "default": {
            "description": "Columns and table views",
            "content": {
              "application/json": {
                "example": {
                  "table_views": [
                    {
                      "name": "All users",
                      "payload": {
                        "columns": [
                          "users.email",
                          "users.first_name",
                          "users.last_name",
                          "users.display_status",
                          "users.usergroups.name"
                        ],
                        "filters": []
                      }
                    }
                  ],
                  "columns": {
                    "users.id": {
                      "name": "User id",
                      "type": "numeric",
                      "key": "users.id"
                    },
                    "users.email": {
                      "name": "Email",
                      "type": "email",
                      "key": "users.email"
                    },
                    "users.created_at": {
                      "name": "Created",
                      "type": "date",
                      "key": "users.created_at"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "List the columns and table views for user table queries",
        "description": "Returns every queryable user column with its `type` (`keyword`, `numeric`, `date`, `name`, `email`) plus predefined table views whose `payload` can be sent as-is to `POST /users/table`. See the [Table queries](/getting-started/table-queries) guide.",
        "parameters": []
      }
    },
    "/api/external/users/table": {
      "post": {
        "tags": [
          "Users"
        ],
        "operationId": "post-users-table",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalUsersTableRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rows keyed by column, with the total and page count",
            "content": {
              "application/json": {
                "example": {
                  "items": [
                    {
                      "users.id": 523108,
                      "users.first_name": "Jane",
                      "users.last_name": "Doe",
                      "users.created_at": "2026-02-16 08:41:47"
                    }
                  ],
                  "total": 1,
                  "pages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid pagination, including the applicable constraints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPaginationErrorResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "summary": "Query users as a table",
        "description": "Choose `columns` from `GET /users/columns`, filter, sort and paginate. Rows are objects keyed by column. Limits: 100 columns, 5 filters, 1 sort, 500 rows per page. See the [Table queries](/getting-started/table-queries) guide.",
        "parameters": []
      }
    },
    "/api/external/users/upload": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Import users from a CSV file",
        "operationId": "post-users-upload",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "users"
                ],
                "properties": {
                  "users": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "example": {
                  "message": "Your users will be imported as soon as possible"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiToken": []
          }
        ],
        "description": "Adds and updates users, optionally with their manager (team data) and HRIS attributes. Runs in the background. File rules in the [CSV user import](/guides/bulk-data-import) guide.",
        "parameters": []
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiToken": {
        "type": "apiKey",
        "in": "header",
        "name": "X-TOKEN",
        "description": "Your account API token, sent as the `X-TOKEN` header on every request."
      }
    },
    "schemas": {
      "Account": {
        "required": [
          "name",
          "index_name"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "index_name": {
            "type": "string",
            "pattern": "[a-z0-9]{3,100}"
          }
        },
        "type": "object"
      },
      "Account14": {
        "type": "object"
      },
      "AssessmentLibrary": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "serial_no": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "AssessmentLibrary9": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "serial_no": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Competency": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "elastic_field": {
            "$ref": "#/components/schemas/ElasticField"
          },
          "type": {
            "type": "integer",
            "enum": [
              0,
              1,
              2
            ]
          },
          "description": {
            "type": "string"
          },
          "account": {
            "$ref": "#/components/schemas/Account14"
          },
          "system_default": {
            "type": "boolean",
            "default": false
          },
          "icon": {
            "type": "string"
          },
          "summary_description": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "CompetencyContentLibrary": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "report_title": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "CreateExternalUserRequestBody": {
        "properties": {
          "email": {
            "type": "string",
            "default": "",
            "example": "test@example.com"
          },
          "first_name": {
            "type": "string",
            "default": "",
            "maxLength": 200,
            "example": "first"
          },
          "last_name": {
            "type": "string",
            "default": "",
            "maxLength": 200,
            "example": "last"
          },
          "groups": {
            "title": "tag names; a tag that does not exist on the account is created",
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [],
            "example": [
              "Sales"
            ]
          },
          "locale": {
            "type": "string",
            "default": "en",
            "example": "en"
          },
          "employee_id": {
            "title": "The client's own identifier for the person, readable back as `employee_id`.",
            "type": "string",
            "maxLength": 255,
            "example": "EMP-1042",
            "nullable": true
          }
        },
        "type": "object"
      },
      "CreateInviteCampaignActionRequestBody": {
        "required": [
          "name",
          "assessment_libraries"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 3
          },
          "assessment_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "user_report_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            },
            "default": []
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            },
            "default": []
          },
          "campaign_type": {
            "type": "string",
            "default": "DEVELOPMENT",
            "enum": [
              "DEVELOPMENT",
              "HIRING"
            ]
          },
          "job_role": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "competencies": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            },
            "default": []
          },
          "competency_content_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            },
            "default": []
          },
          "ats_integrated_campaign": {
            "type": "boolean",
            "default": false
          },
          "dc_integrated_campaign": {
            "type": "boolean",
            "default": false
          },
          "dc_integration_provider": {
            "type": "string",
            "default": "cloud_research_connect",
            "enum": [
              "cloud_research_connect"
            ],
            "nullable": true
          },
          "dc_integration_redirect_url": {
            "type": "string",
            "maxLength": 2048,
            "nullable": true
          },
          "notify_on_completion": {
            "type": "boolean",
            "default": false
          },
          "notify_on_completion_users": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            },
            "default": []
          }
        },
        "type": "object"
      },
      "CreatePlaybookRequestBody": {
        "required": [
          "name",
          "assessment_libraries"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 3
          },
          "groups": {
            "type": "array",
            "items": {
              "properties": {
                "name": {
                  "type": "string",
                  "example": "GroupName"
                }
              },
              "type": "object"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "assessment_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "user_report_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "default_for_login": {
            "type": "boolean",
            "default": false
          }
        },
        "type": "object"
      },
      "CreateTeamRequestBody": {
        "required": [
          "name",
          "members"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "manager": {
            "type": "integer",
            "example": 1
          },
          "members": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 2
            }
          },
          "visible_to_member": {
            "type": "boolean",
            "default": false
          },
          "visible_to_manager": {
            "type": "boolean",
            "default": true
          },
          "show_results": {
            "type": "boolean",
            "default": true
          },
          "notify_on_completion": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "CreateUserAssessmentReportShareTokenRequestBody": {
        "required": [
          "user",
          "assessment_library"
        ],
        "properties": {
          "user": {
            "type": "integer"
          },
          "assessment_library": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "CreateUserReportShareTokenRequestBody": {
        "required": [
          "assigned_user_report"
        ],
        "properties": {
          "assigned_user_report": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "DownloadRequestResponseBody": {
        "properties": {
          "download_url": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "file_name": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        },
        "type": "object"
      },
      "ElasticField": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ExternalCampaignRecipientsRequestBody": {
        "properties": {
          "emails": {
            "title": "E-mail addresses; an address with no user on the account creates one.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [],
            "example": [
              "jane@example.com"
            ]
          },
          "user_ids": {
            "title": "Ids of users already on the account.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "default": [],
            "example": [
              2041
            ]
          }
        },
        "type": "object"
      },
      "ExternalPaginationErrorResponseBody": {
        "properties": {
          "code": {
            "type": "integer",
            "example": 400
          },
          "message": {
            "type": "string",
            "example": "Request is invalid!"
          },
          "trans_code": {
            "type": "string",
            "example": "exception.validation.requestInvalid"
          },
          "data": {
            "type": "object",
            "example": {
              "pagination.limit": "This value must be less than or equal to 500."
            },
            "additionalProperties": {
              "type": "string"
            }
          },
          "details": {
            "properties": {
              "type": {
                "type": "string",
                "example": "pagination_validation"
              },
              "constraints": {
                "type": "object",
                "example": {
                  "pagination": {
                    "type": "object"
                  },
                  "pagination.page": {
                    "minimum": 1
                  },
                  "pagination.limit": {
                    "minimum": 1,
                    "maximum": 500
                  }
                }
              },
              "violations": {
                "type": "array",
                "items": {
                  "properties": {
                    "field": {
                      "type": "string",
                      "example": "pagination.limit"
                    },
                    "reason": {
                      "type": "string",
                      "example": "above_maximum"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "ExternalParticipantAssessmentResponseBody": {
        "properties": {
          "id": {
            "title": "The assignment id, as `assessment.id` in GET /external/users/{user}/results.",
            "type": "integer",
            "example": 90210
          },
          "assessment_library_id": {
            "description": "See GET /external/assessment_libraries",
            "type": "integer",
            "example": 3
          },
          "name": {
            "type": "string",
            "example": "Core Drivers"
          },
          "status": {
            "type": "string",
            "enum": [
              "created",
              "started",
              "completed"
            ],
            "example": "created"
          },
          "started_at": {
            "type": "string",
            "example": "2026-10-01T09:12:00+00:00",
            "nullable": true
          },
          "finished_at": {
            "type": "string",
            "example": "2026-10-01T09:40:00+00:00",
            "nullable": true
          },
          "retake": {
            "title": "Whether the participant may retake the assessment.",
            "type": "boolean"
          },
          "score_type": {
            "description": "Scoring service of the library, as in GET /external/users/{user}/results",
            "type": "string",
            "example": "coreDrivers",
            "nullable": true
          }
        },
        "type": "object"
      },
      "ExternalParticipantReportResponseBody": {
        "properties": {
          "id": {
            "description": "Report id (see GET /external/reports)",
            "type": "integer",
            "example": 12
          },
          "name": {
            "type": "string",
            "example": "Core Drivers"
          },
          "display_name": {
            "type": "string",
            "example": "Core Drivers"
          },
          "visible": {
            "title": "Whether the participant can see the report on the platform (it is assigned to them).",
            "type": "boolean"
          },
          "assigned_user_report_id": {
            "title": "Id usable with GET /external/pdf/v2/user-report/{id}/download while the report is visible.",
            "type": "integer",
            "example": 5021,
            "nullable": true
          },
          "ready": {
            "title": "Whether every required assessment has a completed result, i.e. the report can render.",
            "type": "boolean"
          },
          "pending_assessment_library_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": []
          },
          "required_assessment_library_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              3
            ]
          },
          "multi_library": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ExternalReportResponseBody": {
        "properties": {
          "id": {
            "type": "integer",
            "example": 12
          },
          "name": {
            "type": "string",
            "example": "Core Drivers"
          },
          "display_name": {
            "title": "The name shown on this account, when it overrides the report's own name.",
            "type": "string",
            "example": "Core Drivers"
          },
          "required_assessment_library_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              3
            ]
          },
          "multi_library": {
            "type": "boolean"
          },
          "default_assign": {
            "title": "Assigned to every participant automatically when they complete the required assessments.",
            "type": "boolean"
          },
          "admin_report": {
            "title": "Written for the admin/manager audience rather than the participant.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ExternalShareTokenResponseBody": {
        "properties": {
          "token": {
            "description": "The share token",
            "type": "string"
          },
          "url": {
            "description": "Public URL that opens the shared report",
            "type": "string"
          },
          "locale": {
            "description": "Locale the shared report renders in",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ExternalTableRequestBody": {
        "properties": {
          "pagination": {
            "properties": {
              "limit": {
                "type": "integer",
                "default": 10,
                "maximum": 500,
                "minimum": 1
              },
              "page": {
                "type": "integer",
                "default": 1,
                "minimum": 1
              }
            },
            "type": "object",
            "default": {
              "limit": 10,
              "page": 1
            },
            "example": {
              "limit": 10,
              "page": 1
            }
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "q": {
            "type": "string",
            "default": ""
          },
          "ignore_cache": {
            "type": "boolean",
            "default": false
          },
          "disable_cache": {
            "type": "boolean",
            "default": false
          },
          "include_query_count": {
            "type": "boolean",
            "default": true
          }
        },
        "type": "object"
      },
      "ExternalUsersTableRequestBody": {
        "properties": {
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [],
            "maxItems": 100,
            "minItems": 1,
            "example": [
              "users.id",
              "users.first_name",
              "users.last_name"
            ]
          },
          "filters": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [],
            "maxItems": 5,
            "minItems": 0,
            "example": [
              {
                "field": "users.created_at",
                "type": "between",
                "value": [
                  "2024-10-12 00:00:00",
                  "2025-03-10 23:59:59"
                ]
              }
            ]
          },
          "sort": {
            "type": "object",
            "default": [],
            "maxItems": 1,
            "minItems": 0,
            "example": {
              "users.created_at": "desc"
            }
          },
          "pagination": {
            "properties": {
              "limit": {
                "type": "integer",
                "default": 100,
                "maximum": 500,
                "minimum": 1
              },
              "page": {
                "type": "integer",
                "default": 1,
                "minimum": 1
              }
            },
            "type": "object",
            "default": {
              "limit": 100,
              "page": 1
            },
            "example": {
              "limit": 100,
              "page": 1
            }
          },
          "q": {
            "type": "string",
            "default": "",
            "example": "developer@deepersignals"
          }
        },
        "type": "object"
      },
      "GetTeamResponseBody": {
        "properties": {
          "total": {
            "type": "integer"
          },
          "pages": {
            "type": "integer"
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "properties": {
                "id": {
                  "type": "number"
                },
                "name": {
                  "type": "string"
                },
                "createdAt": {
                  "type": "string"
                },
                "updatedAt": {
                  "type": "string"
                },
                "invitedUsersCount": {
                  "type": "number"
                },
                "completedUsersCount": {
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          "page": {
            "type": "integer"
          },
          "size": {
            "type": "integer"
          },
          "stats": {
            "type": "array",
            "items": {
              "properties": {
                "invitedUsersCount": {
                  "type": "number"
                },
                "completedUsersCount": {
                  "type": "number"
                },
                "inProgressUsersCount": {
                  "type": "number"
                }
              },
              "type": "object"
            }
          }
        },
        "type": "object"
      },
      "Group": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "Group3": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "InviteCampaign": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean",
            "default": true
          },
          "archived_at": {
            "type": "string",
            "format": "date-time"
          },
          "assessment_libraries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentLibrary9"
            }
          },
          "user_report_libraries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserReportLibrary"
            }
          },
          "usergroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            }
          },
          "invite_token": {
            "type": "string"
          },
          "link_type": {
            "type": "string",
            "default": "PUBLIC"
          },
          "login_type": {
            "type": "string",
            "default": "NORMAL"
          },
          "link_enabled": {
            "type": "boolean",
            "default": true
          },
          "campaign_type": {
            "type": "string"
          },
          "job_role": {
            "$ref": "#/components/schemas/Competency"
          },
          "competencies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Competency"
            }
          },
          "competency_content_libraries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompetencyContentLibrary"
            }
          },
          "ats_integrated_campaign": {
            "type": "boolean",
            "default": false
          },
          "dc_integrated_campaign": {
            "type": "boolean",
            "default": false
          },
          "dc_integration_provider": {
            "type": "string",
            "default": "cloud_research_connect"
          },
          "dc_integration_redirect_url": {
            "type": "string"
          },
          "notify_on_completion": {
            "type": "boolean",
            "default": false
          }
        },
        "type": "object"
      },
      "Locale": {
        "properties": {
          "code": {
            "type": "string",
            "pattern": ".*(^([a-z]{2}|[a-z]{2}-[A-Z]{2}|es-419)$).*"
          },
          "name": {
            "type": "string"
          },
          "right_to_left": {
            "type": "boolean",
            "default": false
          }
        },
        "type": "object"
      },
      "Playbook": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "assessment_libraries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentLibrary"
            }
          },
          "user_report_libraries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserReportLibrary6"
            }
          },
          "usergroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group3"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Project"
            }
          },
          "name": {
            "type": "string"
          },
          "identity": {
            "type": "string"
          },
          "account": {
            "$ref": "#/components/schemas/Account"
          },
          "default_for_login": {
            "type": "boolean",
            "default": false
          }
        },
        "type": "object"
      },
      "Project": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateExternalUserRequestBody": {
        "properties": {
          "first_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "example": "first",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "example": "last",
            "nullable": true
          },
          "email": {
            "type": "string",
            "example": "test@example.com",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "example": "en",
            "nullable": true
          },
          "employee_id": {
            "title": "Readable back as `employee_id`; send an empty string to clear it.",
            "type": "string",
            "maxLength": 255,
            "example": "EMP-1042",
            "nullable": true
          },
          "active": {
            "title": "false deactivates the user (they can no longer sign in), true reactivates.",
            "type": "boolean",
            "nullable": true
          },
          "groups": {
            "title": "Replaces the user's tags with exactly this list; tags missing on the account are created.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": null,
            "example": [
              "Sales"
            ],
            "nullable": true
          }
        },
        "type": "object"
      },
      "UpdatePlaybookRequestBody": {
        "required": [
          "name",
          "assessment_libraries"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 3
          },
          "groups": {
            "type": "array",
            "items": {
              "properties": {
                "name": {
                  "type": "string",
                  "example": "GroupName"
                }
              },
              "type": "object"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "assessment_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "user_report_libraries": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 42
            }
          },
          "default_for_login": {
            "type": "boolean",
            "default": false
          }
        },
        "type": "object"
      },
      "UpdateTeamRequestBody": {
        "required": [
          "members"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50
          },
          "manager": {
            "type": "integer",
            "example": 1
          },
          "members": {
            "type": "array",
            "items": {
              "type": "integer",
              "example": 2
            }
          },
          "visible_to_member": {
            "type": "boolean",
            "default": false
          },
          "visible_to_manager": {
            "type": "boolean",
            "default": true
          },
          "show_results": {
            "type": "boolean",
            "default": true
          },
          "notify_on_completion": {
            "type": "boolean",
            "default": false
          }
        },
        "type": "object"
      },
      "UserReportLibrary": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "UserReportLibrary6": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      }
    }
  }
}
