Playbooks
A playbook bundles what should happen to a user right after they sign in or are created through single sign-on: which assessments they get, which reports they may see, and which groups and projects they join.
You create a playbook once and reuse it for every user. That means no API call per user: sign the SSO JWT with the playbook's identity (or set it as the SAML relay state) and the user is created and set up in one step.
Fields
| Field | Description |
|---|---|
name | Label shown in the admin app. |
assessment_libraries | Ids of the assessments to assign. Required. Catalog: GET /assessment_libraries. |
user_report_libraries | Ids of the reports to make visible for those assessments. Catalog: GET /reports. |
groups | Group ids the user joins. |
projects | Ids of projects the user joins. Project ids are shown in the admin app. |
default_for_login | When true, this playbook also runs for users who sign in through SAML without a relay state or playbook URL. |
identity | Generated on creation. The value you reference from SSO. |
Using the API
GET /playbooklists the account's playbooks with theiridentity.POST /playbook/createcreates one.PUT /playbook/{playbook_id}andDELETE /playbook/{playbook_id}update and remove it.
curl -X POST https://api.deepersignals.com/api/external/playbook/create \
-H "X-TOKEN: $DS_API_TOKEN" -H "Content-Type: application/json" \
-d '{
"name": "New hires 2026",
"assessment_libraries": [24],
"user_report_libraries": [6],
"groups": [135],
"projects": [1],
"default_for_login": false
}'
The response carries the generated identity:
{
"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" }
}
Using the identity
| Sign-in method | Where the identity goes |
|---|---|
| JWT SSO | identity claim of the token. |
| SAML, IdP-initiated | The playbook's relay state code configured in your IdP. |
| SAML, SP-initiated | The playbook's Playbook URL, distributed to the users who should get it. |
A playbook only adds. Running it again for a user who already has the assessment does not assign a duplicate.