{"openapi":"3.1.0","paths":{"/workspaces/{workspace}/objects/{object}/records/{record}/activities":{"get":{"description":"Returns the activity feed for a record: a paginated, reverse-chronological list of change events (field updates, comments, relationship changes) grouped into activities. Each activity bundles one or more related events.","operationId":"getActivities","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"record","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}}],"responses":{"200":{"description":"The record’s activity feed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfActivitiesResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"activity","id":"f2c8e4a1-6b9d-4e7f-8a3c-0d5b2f7e1a94","attributes":{"_id":"f2c8e4a1-6b9d-4e7f-8a3c-0d5b2f7e1a94","_created_at":"2026-02-01T17:45:00.000Z","aggKey":"person:5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71:clarify:update","data":[{"_id":"b4f1a7c2-8d3e-4f6a-9b2c-1e5d7a3f9c40","_created_at":"2026-02-01T17:45:00.000Z","type":"clarify:update","actor":{"_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","anonymous_id":null,"entity":"user","source_id":null},"object":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","anonymous_id":null,"entity":"person","diff":[{"op":"update","path":["job_title"],"val":"VP of Marketing","oldVal":"Director of Marketing"}]}}]}}]}}}}},"summary":"List record activities","tags":["Activities"]}},"/workspaces/{workspace}/campaigns/{campaignId}/recipients":{"get":{"description":"Returns the people enrolled in a campaign as an offset-paginated JSON:API collection, each with their per-recipient engagement — whether they opened, clicked, replied, or unsubscribed, and when each last happened. Filter by engagement with `filter[event]` (for example `filter[event]=clicked` to build a retargeting audience), by delivery state with `filter[status]`, or by name/email with `filter[q]`. Recipients are collapsed to one row per person, preferring their active run.","operationId":"getRecipients","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"campaignId","required":true,"in":"path","description":"The unique ID of the campaign.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"filter","required":false,"in":"query","description":"Nested filter object, e.g. `filter[event]=clicked&filter[status]=completed`.","schema":{"properties":{"status":{"type":"string","enum":["scheduled","completed","paused","failed","unsubscribed"],"description":"Return only recipients in this delivery state, e.g. `filter[status]=completed`.","required":false},"event":{"type":"array","items":{"type":"string","enum":["opened","clicked","replied"]},"description":"Return only recipients who performed at least one of these engagement events. Comma-separated and OR-ed, e.g. `filter[event]=clicked,replied`.","required":false,"isArray":true},"q":{"type":"string","maxLength":50,"description":"Case-insensitive substring match against the recipient’s name or email address.","required":false}},"type":"object"}}],"responses":{"200":{"description":"A page of the campaign’s recipients.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfCampaignRecipientsResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"total_unfiltered":12,"campaign_enabled":true,"list_evaluation_status":"idle","list_member_count":12},"data":[{"type":"campaign_recipient","id":"b41d8f62-0e35-4a7c-9d18-6f2a3c5e8b74","attributes":{"workflow_run_id":"b41d8f62-0e35-4a7c-9d18-6f2a3c5e8b74","person":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe","full_name":"Jane Doe"},"email_addresses":{"items":["jane@acme.com"]},"avatar_url":null,"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"},"status":"success","resume_at":null,"current_block_id":null,"started_at":"2026-01-15T09:30:00.000Z","ended_at":"2026-02-01T17:45:00.000Z","exit_reason":null,"exit_block_id":null,"has_opened":true,"has_clicked":true,"has_replied":false,"has_unsubscribed":false,"last_opened_at":"2026-01-16T11:02:41.000Z","last_clicked_at":"2026-01-16T11:03:12.000Z","last_replied_at":null,"_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}]}}}}},"summary":"List campaign recipients","tags":["Campaigns"]}},"/workspaces/{workspace}/comments":{"post":{"description":"Creates a comment on a record. The comment body is rich text, and `owner_id` plus `entity` identify the record it is attached to. Returns the created comment row.","operationId":"createComment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommentDto"},"examples":{"create":{"summary":"Comment on a person record","value":{"entity":"person","owner_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","message":[{"id":"1","type":"paragraph","children":[],"content":[{"type":"text","text":"Followed up after the QBR — Jane wants pricing by Friday.","styles":{}}]}]}}}}}},"responses":{"201":{"description":"The created comment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRow"},"example":{"_id":"9d3e1f7a-2c4b-4e6d-8a1f-5b7c9e0d2a46","message":[{"id":"1","type":"paragraph","children":[],"content":[{"type":"text","text":"Followed up after the QBR — Jane wants pricing by Friday.","styles":{}}]}],"owner_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","entity":"person","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}},"403":{"description":"`owner_id` does not resolve to a record you can comment on."},"422":{"description":"The message is empty, or the entity does not support comments."}},"summary":"Create a comment","tags":["Comments"]}},"/workspaces/{workspace}/comments/{id}":{"get":{"description":"Returns a single comment by its ID.","operationId":"getComment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the comment.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested comment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRow"},"example":{"_id":"9d3e1f7a-2c4b-4e6d-8a1f-5b7c9e0d2a46","message":[{"id":"1","type":"paragraph","children":[],"content":[{"type":"text","text":"Followed up after the QBR — Jane wants pricing by Friday.","styles":{}}]}],"owner_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","entity":"person","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}}},"summary":"Get a comment","tags":["Comments"]},"patch":{"description":"Replaces the body of an existing comment. Only the comment’s author may edit it. Returns the updated comment.","operationId":"updateComment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the comment.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommentDto"},"examples":{"update":{"summary":"Edit the comment body","value":{"message":[{"id":"1","type":"paragraph","children":[],"content":[{"type":"text","text":"Followed up after the QBR — Jane signed off on pricing.","styles":{}}]}]}}}}}},"responses":{"200":{"description":"The updated comment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRow"},"example":{"_id":"9d3e1f7a-2c4b-4e6d-8a1f-5b7c9e0d2a46","message":[{"id":"1","type":"paragraph","children":[],"content":[{"type":"text","text":"Followed up after the QBR — Jane wants pricing by Friday.","styles":{}}]}],"owner_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","entity":"person","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}},"403":{"description":"The caller is not the author of the comment."},"404":{"description":"No comment exists with that ID."},"422":{"description":"The message is empty."}},"summary":"Update a comment","tags":["Comments"]},"delete":{"description":"Permanently deletes a comment. A comment can be deleted by its author, by an admin, or by the owner of the agent that posted it. Returns the deleted comment. This cannot be undone.","operationId":"deleteComment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the comment.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The deleted comment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRow"},"example":{"_id":"9d3e1f7a-2c4b-4e6d-8a1f-5b7c9e0d2a46","message":[{"id":"1","type":"paragraph","children":[],"content":[{"type":"text","text":"Followed up after the QBR — Jane wants pricing by Friday.","styles":{}}]}],"owner_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","entity":"person","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}}},"summary":"Delete a comment","tags":["Comments"]}},"/workspaces/{workspace}/layouts/{id}":{"get":{"description":"Returns a single layout by its ID. A layout defines the UI structure — navigation, record page regions — rendered for the workspace.","operationId":"getLayoutById","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the layout.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested layout.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LayoutResponseDto"},"example":{"_id":"list__person","tree":{"version":1,"children":[{"id":"views","type":"NavGroup","props":{"name":"Views"},"children":[{"id":"all-people","type":"NavLink","props":{"entity":"person"}}]}]},"_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}},"summary":"Get a layout","tags":["Layouts"]},"patch":{"description":"Replaces the layout’s `tree` and returns the updated layout.","operationId":"updateLayout","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the layout.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLayoutBodyDto"},"examples":{"updateLayout":{"summary":"Update a layout","value":{"data":{"type":"layout","id":"list__person","attributes":{"tree":{"version":1,"children":[{"id":"views","type":"NavGroup","props":{"name":"Views"},"children":[{"id":"all-people","type":"NavLink","props":{"entity":"person"}}]}]}}}}}}}}},"responses":{"200":{"description":"The updated layout.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LayoutResponseDto"},"example":{"_id":"list__person","tree":{"version":1,"children":[{"id":"views","type":"NavGroup","props":{"name":"Views"},"children":[{"id":"all-people","type":"NavLink","props":{"entity":"person"}}]}]},"_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}},"summary":"Update a layout","tags":["Layouts"]}},"/workspaces/{workspace}/layouts/{id}/reset":{"post":{"description":"Restores the layout to its default `tree` and returns the resulting layout.","operationId":"resetLayout","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the layout.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The layout, restored to its default tree.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LayoutResponseDto"},"example":{"_id":"list__person","tree":{"version":1,"children":[{"id":"views","type":"NavGroup","props":{"name":"Views"},"children":[{"id":"all-people","type":"NavLink","props":{"entity":"person"}}]}]},"_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}},"summary":"Reset a layout","tags":["Layouts"]}},"/workspaces/{workspace}/objects/{object}/lists":{"get":{"description":"Returns the lists defined on an object type as a paginated JSON:API collection. Dynamic lists are excluded unless you pass a matching `filter`.","operationId":"getLists","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"filter","required":false,"in":"query","description":"Nested filter object, e.g. `filter[type]=static&filter[state]=published`. When omitted, dynamic lists are excluded.","schema":{"properties":{"type":{"type":"string","enum":["dynamic","static","default"],"description":"The list type: `dynamic` (membership derives from a SQL query), `static` (an explicit set of records), or `default` (the object’s built-in list).","required":false},"state":{"type":"string","enum":["draft","published"],"description":"Whether the list is a `draft` or `published`.","required":false},"_created_by":{"type":"string","description":"The ID of the user who created the list.","required":false}},"type":"object"}},{"name":"search","required":false,"in":"query","description":"Case-insensitive substring match against the list title.","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"A page of lists for the object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfListsResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}]}}}}},"summary":"List an object’s lists","tags":["Lists"]},"post":{"description":"Creates a list on the given object type. A `dynamic` list derives its membership from the SQL `query`; a `static` list starts empty. Returns the created list.","operationId":"createList","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListDto"},"examples":{"create":{"summary":"Create a dynamic list of enterprise deals","value":{"title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","layout":"table","type":"dynamic","query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"}}}}}}},"responses":{"201":{"description":"The created list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"},"example":{"data":{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Create a list","tags":["Lists"]}},"/workspaces/{workspace}/objects/{object}/lists/{list}":{"get":{"description":"Returns a single list by ID as a JSON:API resource.","operationId":"getList","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"},"example":{"data":{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}},"401":{"description":"The request is not authenticated. Existence is never leaked to unauthenticated callers."},"403":{"description":"The list exists but the authenticated caller has no access to it."},"404":{"description":"No list with this ID exists on the object."}},"summary":"Get a list","tags":["Lists"]},"patch":{"description":"Applies a partial update to a list: only the fields present in the body are changed. The object’s default list cannot be updated. Returns the updated list.","operationId":"updateList","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateListDto"},"examples":{"update":{"summary":"Rename a list","value":{"title":"Enterprise deals (FY26)"}}}}}},"responses":{"200":{"description":"The updated list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"},"example":{"data":{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Update a list","tags":["Lists"]},"delete":{"description":"Permanently deletes a list. The object’s default list and the last remaining list on an object cannot be deleted. This cannot be undone.","operationId":"deleteList","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"202":{"description":"The list was deleted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Delete a list","tags":["Lists"]}},"/workspaces/{workspace}/objects/{object}/lists/{list}/publish":{"post":{"description":"Publishes a draft list, making it visible to its audience. Returns the updated list.","operationId":"publishList","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"201":{"description":"The published list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"},"example":{"data":{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Publish a list","tags":["Lists"]}},"/workspaces/{workspace}/objects/{object}/lists/{list}/unpublish":{"post":{"description":"Reverts a published list to draft state. Returns the updated list.","operationId":"unpublishList","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"201":{"description":"The unpublished list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"},"example":{"data":{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Unpublish a list","tags":["Lists"]}},"/workspaces/{workspace}/objects/{object}/lists/{list}/rows/csv":{"post":{"description":"Streams the rows of a list as a `text/csv` file download. The first row is a header of field names. Pass a `sql` statement in the body to export a custom query instead of the list’s own rows.","operationId":"getListRowsCsv","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfRowsRequestDto"},"examples":{"export":{"summary":"Export the list’s rows","value":{"sql":"SELECT * FROM deal WHERE amount >= 50000"}}}}}},"responses":{"200":{"description":"The list rows as a CSV file.","content":{"text/csv":{"schema":{"type":"string","format":"binary"},"example":"_id,name,stage,amount,close_date\ne7c9a1f4-2b8d-4c6e-9f0a-5d3b7e1c8a42,Acme Renewal Q1,In progress,50000,2026-03-31"}}}},"summary":"Export a list’s rows as CSV","tags":["ListRows"]}},"/workspaces/{workspace}/lists":{"get":{"description":"Returns every list across all object types in the workspace as a paginated JSON:API collection. Filter by object type with `filter[entity]`. Dynamic lists are excluded unless you pass a matching `filter`.","operationId":"getWorkspaceLists","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"filter","required":false,"in":"query","description":"Nested filter object, e.g. `filter[entity]=deal&filter[type]=static`. When omitted, dynamic lists are excluded.","schema":{"properties":{"type":{"type":"string","enum":["dynamic","static","default"],"description":"The list type: `dynamic` (membership derives from a SQL query), `static` (an explicit set of records), or `default` (the object’s built-in list).","required":false},"state":{"type":"string","enum":["draft","published"],"description":"Whether the list is a `draft` or `published`.","required":false},"_created_by":{"type":"string","description":"The ID of the user who created the list.","required":false},"entity":{"description":"One or more object types to include, e.g. `filter[entity]=deal,company`.","type":"array","items":{"type":"string","minLength":1},"required":false,"isArray":true}},"type":"object"}},{"name":"search","required":false,"in":"query","description":"Case-insensitive substring match against the list title.","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"A page of the workspace’s lists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfListsResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"list","id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","attributes":{"_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","entity":"deal","title":"Enterprise deals","emoji":"🏢","description":"Open deals with enterprise accounts.","type":"dynamic","state":"published","layout":"table","options":{},"query":{"sql":"SELECT * FROM deal WHERE amount >= 50000"},"owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","rank":0,"applied_version_id":null,"list_evaluation_status":"idle","list_evaluation_started_at":null,"last_list_evaluation_at":"2026-02-01T17:45:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}]}}}}},"summary":"List a workspace’s lists","tags":["Lists"]}},"/workspaces/{workspace}/meetings/{meetingId}/recording":{"post":{"description":"Turns on recording for a meeting so a notetaker bot joins the call. Returns the updated meeting record.","operationId":"enableRecording","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"201":{"description":"The meeting with recording enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"meeting","id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","attributes":{"_id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","title":"Acme Renewal QBR","start":"2026-02-01T17:00:00.000Z","end":"2026-02-01T17:30:00.000Z","recording_enabled":true,"_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Enable meeting recording","tags":["MeetingRecordings"]},"delete":{"description":"Turns off recording for a meeting so no notetaker bot joins the call. Returns the updated meeting record.","operationId":"disableRecording","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The meeting with recording disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"meeting","id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","attributes":{"_id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","title":"Acme Renewal QBR","start":"2026-02-01T17:00:00.000Z","end":"2026-02-01T17:30:00.000Z","recording_enabled":false,"_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Disable meeting recording","tags":["MeetingRecordings"]}},"/workspaces/{workspace}/meetings/{meetingId}/recordings/{id}/artifacts":{"post":{"description":"Returns short-lived signed URLs for a recording’s video and transcript files. Either URL is `null` when that artifact is not available.","operationId":"getRecordingArtifacts","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the recording.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"201":{"description":"The recording’s signed artifact URLs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingArtifactResponse"},"example":{"data":{"videoUrl":"https://storage.clarify.ai/recordings/acme/2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62/video.mp4?signature=...","transcriptionUrl":"https://storage.clarify.ai/recordings/acme/2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62/transcript.json?signature=..."}}}}}},"summary":"Get recording artifacts","tags":["MeetingRecordings"]}},"/workspaces/{workspace}/meetings/{meetingId}/recordings/transcript":{"post":{"description":"Creates a recording on the meeting from an externally captured transcript, so meetings recorded outside Clarify can be summarized and searched, and triggers summary generation. A meeting with a recording already gets a second recording. Pass `recordingId` to overwrite a completed manual-upload recording’s transcript instead. Returns the recording.","operationId":"uploadRecordingTranscript","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRecordingTranscriptDto"},"examples":{"upload":{"summary":"Upload a two-word transcript segment","value":{"transcript":[{"speaker":"Jane Doe","speaker_id":1,"language":"en","words":[{"text":"Thanks","start_timestamp":0,"end_timestamp":0.4,"language":"en","confidence":0.98},{"text":"everyone","start_timestamp":0.4,"end_timestamp":0.9,"language":"en","confidence":0.97}]}]}}}}}},"responses":{"201":{"description":"The created meeting recording.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"meeting_recording","id":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","attributes":{"_id":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","meeting_id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","recording_source":"manual_upload","status":"Done","start_at":"2026-02-01T17:00:00.000Z","end_at":"2026-02-01T17:30:00.000Z","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Upload a recording transcript","tags":["MeetingRecordings"]}},"/workspaces/{workspace}/meetings/{meetingId}/recordings/media":{"post":{"description":"Creates a pending recording on the meeting and returns a presigned S3 POST policy for uploading an audio or video file directly to storage. Uploaded media is stored for playback and is not transcribed. Optionally include a transcript in the same request so one recording carries both video and transcript. Submit the file to the returned policy, then confirm the upload. Pass `recordingId` to overwrite a completed manual-upload recording instead of creating a new one.","operationId":"initMediaUpload","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitRecordingMediaDto"},"examples":{"upload":{"summary":"Start an mp4 video upload","value":{"contentType":"video/mp4"}}}}}},"responses":{"201":{"description":"The pending recording and the presigned upload policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitRecordingMediaResponse"},"example":{"data":{"recordingId":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","meetingId":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","key":"acme/manual/2026-02-01/2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62/recording-7e71a013-1341-4472-a54d-63d81a56b5dd.mp4","upload":{"url":"https://storage.clarify.ai/meeting-recordings","fields":{"key":"acme/manual/2026-02-01/2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62/recording-7e71a013-1341-4472-a54d-63d81a56b5dd.mp4","Content-Type":"video/mp4","policy":"...","x-amz-signature":"..."}}}}}}}},"summary":"Start a recording media upload","tags":["MeetingRecordings"]}},"/workspaces/{workspace}/meetings/{meetingId}/recordings/media/{recordingId}":{"post":{"description":"Finalizes a media upload after the file has been submitted to the presigned policy: validates the stored object and marks the recording complete. Returns the finalized recording.","operationId":"confirmMediaUpload","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"recordingId","required":true,"in":"path","description":"The unique ID of the recording.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The finalized meeting recording.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"meeting_recording","id":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","attributes":{"_id":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","meeting_id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","recording_source":"manual_upload","status":"Done","start_at":"2026-02-01T17:00:00.000Z","end_at":"2026-02-01T17:30:00.000Z","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Confirm a recording media upload","tags":["MeetingRecordings"]}},"/workspaces/{workspace}/meetings/{meetingId}/transcript":{"post":{"deprecated":true,"description":"Creates a recording for a meeting from an externally captured transcript, so meetings recorded outside Clarify can be summarized and searched. Returns the created recording.","operationId":"uploadTranscript","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"meetingId","required":true,"in":"path","description":"The unique ID of the meeting.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadTranscriptDto"},"examples":{"upload":{"summary":"Upload a two-word transcript segment","value":{"transcript":[{"speaker":"Jane Doe","speaker_id":1,"language":"en","words":[{"text":"Thanks","start_timestamp":0,"end_timestamp":0.4,"language":"en","confidence":0.98},{"text":"everyone","start_timestamp":0.4,"end_timestamp":0.9,"language":"en","confidence":0.97}]}]}}}}}},"responses":{"201":{"description":"The created meeting recording.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"meeting_recording","id":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","attributes":{"_id":"2f7a9c1e-4b6d-4e8a-9c0f-1d3b5e7a9c62","meeting_id":"6c8e0a2b-4d5f-4a7b-9c1d-3e5f7a9b1c2d","recording_source":"manual_upload","status":"Done","start_at":"2026-02-01T17:00:00.000Z","end_at":"2026-02-01T17:30:00.000Z","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Upload a meeting transcript","tags":["MeetingRecordings"]}},"/workspaces/{workspace}/objects/{object}/access":{"get":{"description":"Returns entity-wide access delegations for the object type as a JSON:API collection. Entity-wide access delegation grants another user the same access you have to every record of that object type. The response includes both delegations you have granted and delegations granted to you. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"getObjectAccess","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type this delegation applies to: `meeting` or `message`.","schema":{"type":"string","enum":["meeting","message"]}}],"responses":{"200":{"description":"The access delegations you granted and those granted to you.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectAccessListResponse"},"example":{"data":[{"type":"object-access","id":"a1f4e6d2-8c9b-4f3a-9d5e-1b6c8a2f7d90","attributes":{"_id":"a1f4e6d2-8c9b-4f3a-9d5e-1b6c8a2f7d90","owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","delegate_id":"2b6e4f8a-3d1c-4a9e-8b5f-7c2a9d0e4f63","entity":"meeting","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}]}}}}},"summary":"List object access delegations","tags":["ObjectAccess"]},"post":{"description":"Grants another user entity-wide access delegation: the same access you have to every record of the given object type. Requires a paid plan with access delegation enabled. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"giveObjectAccess","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type this delegation applies to: `meeting` or `message`.","schema":{"type":"string","enum":["meeting","message"]}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateObjectAccessRequestDto"},"examples":{"grantAccess":{"summary":"Grant access to a teammate","value":{"data":{"type":"object-access","attributes":{"delegate_id":"2b6e4f8a-3d1c-4a9e-8b5f-7c2a9d0e4f63"}}}}}}}},"responses":{"201":{"description":"The created access delegation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectAccessResponse"},"example":{"data":{"type":"object-access","id":"a1f4e6d2-8c9b-4f3a-9d5e-1b6c8a2f7d90","attributes":{"_id":"a1f4e6d2-8c9b-4f3a-9d5e-1b6c8a2f7d90","owner_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","delegate_id":"2b6e4f8a-3d1c-4a9e-8b5f-7c2a9d0e4f63","entity":"meeting","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}}}}},"summary":"Grant object access","tags":["ObjectAccess"]}},"/workspaces/{workspace}/objects/{object}/access/{id}":{"delete":{"description":"Revokes a previously granted access delegation. Requires a paid plan with access delegation enabled. Returns 202 Accepted with an empty body. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"revokeObjectAccess","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type this delegation applies to: `meeting` or `message`.","schema":{"type":"string","enum":["meeting","message"]}},{"name":"id","required":true,"in":"path","description":"The unique ID of the access delegation.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"202":{"description":"The delegation was revoked. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Revoke object access","tags":["ObjectAccess"]}},"/workspaces/{workspace}/objects/{object}/records/{id}/access":{"get":{"description":"Returns every access grant on a single record — a record entity (`deal`, `company`, `person`, or a custom object) or a `list`, `meeting`, or `message` — as a JSON:API collection. A grant shares the record with a single workspace member or the whole workspace at a given access level. Visible to anyone who can already read the record. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"getGrants","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The shareable object the record belongs to: a record entity (`deal`, `company`, `person`, `task`, a custom object) or `list` / `meeting` / `message`.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the shared record.","schema":{"type":"string"}}],"responses":{"200":{"description":"The record’s access grants.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectRecordAccessListResponse"},"example":{"data":[{"type":"object-record-access","id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","attributes":{"_id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","object_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","grantee_type":"user","grantee_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","access_level":"view","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}],"meta":{"viewerAccess":[]}}}}}},"summary":"List record access grants","tags":["RecordAccess"]},"post":{"description":"Shares a single record — a record entity (`deal`, `company`, `person`, or a custom object) or a `list`, `meeting`, or `message` — with a user or the whole workspace at a given access level. Only the record’s owner or a workspace permission admin (records and lists), the record’s owner (messages), a participant (meetings), or the assignee or creator (tasks) can create grants. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"createGrant","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The shareable object the record belongs to: a record entity (`deal`, `company`, `person`, `task`, a custom object) or `list` / `meeting` / `message`.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the shared record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateObjectRecordAccessRequestDto"},"examples":{"user":{"summary":"Share with a user","value":{"data":{"type":"object-record-access","attributes":{"grantee_type":"user","grantee_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","access_level":"view"}}}}}}}},"responses":{"201":{"description":"The created grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectRecordAccessResponse"},"example":{"data":{"type":"object-record-access","id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","attributes":{"_id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","object_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","grantee_type":"user","grantee_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","access_level":"view","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}}}}},"summary":"Create a record access grant","tags":["RecordAccess"]}},"/workspaces/{workspace}/objects/{object}/records/{id}/access/bulk":{"post":{"description":"Shares a single record with multiple users and/or the whole workspace in one request, up to 1000 grants per call. Only the record’s owner or a workspace permission admin (records and lists), the record’s owner (messages), a participant (meetings), or the assignee or creator (tasks) can create grants. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"createGrantsBulk","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The shareable object the record belongs to: a record entity (`deal`, `company`, `person`, `task`, a custom object) or `list` / `meeting` / `message`.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the shared record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkObjectRecordAccessRequestDto"},"examples":{"bulk":{"summary":"Share with a user and the workspace","value":{"data":[{"type":"object-record-access","attributes":{"grantee_type":"user","grantee_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","access_level":"view"}},{"type":"object-record-access","attributes":{"grantee_type":"workspace","grantee_id":null,"access_level":"edit"}}]}}}}}},"responses":{"201":{"description":"The created grants.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectRecordAccessListResponse"},"example":{"data":[{"type":"object-record-access","id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","attributes":{"_id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","object_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","grantee_type":"user","grantee_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","access_level":"view","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}},{"type":"object-record-access","id":"3a5b7d9f-1c2e-4b6a-8d0f-2e4c6a8b0d1f","attributes":{"_id":"3a5b7d9f-1c2e-4b6a-8d0f-2e4c6a8b0d1f","object_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","grantee_type":"workspace","grantee_id":null,"access_level":"edit","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}],"meta":{"viewerAccess":[]}}}}}},"summary":"Create record access grants in bulk","tags":["RecordAccess"]}},"/workspaces/{workspace}/objects/{object}/records/{id}/access/{grantId}":{"patch":{"description":"Changes the access level of an existing grant on a record. Only the record’s owner or a workspace permission admin (records and lists), the record’s owner (messages), a participant (meetings), or the assignee or creator (tasks) can manage grants. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"updateGrant","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The shareable object the record belongs to: a record entity (`deal`, `company`, `person`, `task`, a custom object) or `list` / `meeting` / `message`.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the shared record.","schema":{"type":"string"}},{"name":"grantId","required":true,"in":"path","description":"The unique ID of the grant.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateObjectRecordAccessRequestDto"},"examples":{"update":{"summary":"Upgrade to edit access","value":{"data":{"type":"object-record-access","attributes":{"access_level":"edit"}}}}}}}},"responses":{"200":{"description":"The updated grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectRecordAccessResponse"},"example":{"data":{"type":"object-record-access","id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","attributes":{"_id":"2f4a6c8e-0b1d-4a3f-8c5e-7a9b1c3d5e6f","object_id":"9d2c4e6f-8a1b-4c3d-9e5f-7a9b1c3d5e7f","grantee_type":"user","grantee_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","access_level":"edit","_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":null,"_updated_by":null}}}}}}},"summary":"Update a record access grant","tags":["RecordAccess"]},"delete":{"description":"Permanently removes an access grant from a record. Only the record’s owner or a workspace permission admin (records and lists), the record’s owner (messages), a participant (meetings), or the assignee or creator (tasks) can manage grants. Returns 202 Accepted with an empty body. Requires a user-backed API key; workspace-actor API keys are not supported.","operationId":"revokeGrant","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The shareable object the record belongs to: a record entity (`deal`, `company`, `person`, `task`, a custom object) or `list` / `meeting` / `message`.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the shared record.","schema":{"type":"string"}},{"name":"grantId","required":true,"in":"path","description":"The unique ID of the grant.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"202":{"description":"The grant was revoked. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Revoke a record access grant","tags":["RecordAccess"]}},"/workspaces/{workspace}/objects/{object}/records/{id}":{"get":{"description":"Returns a single record as a JSON:API resource. Use `include` to embed related records under `relationships`.","operationId":"getRecord","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"include","required":false,"in":"query","description":"Comma-separated list of relationship names to resolve and embed under `relationships`, e.g. `include=companies,deals`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Get a record","tags":["Records"]},"patch":{"description":"Applies a partial update to a record: only the fields present in `attributes` are changed, all other fields keep their current values.","operationId":"updateRecord","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRecordDto"},"examples":{"update":{"summary":"Change a person’s job title","value":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"job_title":"CMO"}}}}}}}},"responses":{"200":{"description":"The updated record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Update a record","tags":["Records"]},"delete":{"description":"Permanently deletes a record. This cannot be undone.","operationId":"deleteRecord","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The record was deleted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Delete a record","tags":["Records"]}},"/workspaces/{workspace}/objects/{object}/records":{"post":{"description":"Creates a record of the given object type. Pass `match_on` with the name of a unique field to upsert: when an incoming value matches exactly one existing record, that record is updated instead of a new one being created.","operationId":"createRecord","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecordDto"},"examples":{"create":{"summary":"Create a person","value":{"data":{"type":"person","attributes":{"name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"}}}},"upsert":{"summary":"Upsert a person by email","value":{"data":{"type":"person","attributes":{"name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"}},"match_on":"email_addresses"}}}}}},"responses":{"201":{"description":"The created (or matched and updated) record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecordResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Create a record","tags":["Records"]},"patch":{"description":"Applies partial updates to multiple records in one request. Each entry names the record by `id` and lists only the fields to change.","operationId":"updateRecords","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRecordsDto"},"examples":{"bulk":{"summary":"Update one person","value":{"data":[{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"job_title":"CMO"}}]}}}}}},"responses":{"200":{"description":"The updated records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}]}}}}},"summary":"Update records in bulk","tags":["Records"]},"delete":{"description":"Permanently deletes the records listed in `items`. This cannot be undone.","operationId":"deleteRecords","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRecordsDto"},"examples":{"bulk":{"summary":"Delete one person","value":{"items":["5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71"]}}}}}},"responses":{"200":{"description":"The records were deleted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Delete records in bulk","tags":["Records"]}},"/workspaces/{workspace}/objects/{object}/records/bulk":{"post":{"description":"Creates multiple records of the given object type in one request. The request is validated as a whole: if any record fails validation, none are created. Pass `match_on` with the name of a unique field to upsert matching records instead of creating duplicates.","operationId":"createBulkRecords","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkRecordDto"},"examples":{"bulk":{"summary":"Create two people","value":{"data":[{"type":"person","attributes":{"name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"}},{"type":"person","attributes":{"name":{"first_name":"John","last_name":"Smith"},"email_addresses":{"items":["john@acme.com"]},"company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"}}]}}}}}},"responses":{"201":{"description":"The created (or matched and updated) records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkRecordResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}]}}}}},"summary":"Create records in bulk","tags":["Records"]}},"/workspaces/{workspace}/objects/{object}/records/{id}/relationships/{relationship}":{"get":{"description":"Returns the records linked to a record through the given relationship, e.g. the deals related to a person.","operationId":"getRecordRelationships","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"relationship","required":true,"in":"path","description":"The relationship field name as defined in the object’s schema, e.g. `people` or `companies`.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"include","required":false,"in":"query","description":"Comma-separated list of nested relationship paths to resolve, relative to the parent record, e.g. `include=companies.deals`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The related records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfRecordsResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"deal","id":"e7c9a1f4-2b8d-4c6e-9f0a-5d3b7e1c8a42","attributes":{"_id":"e7c9a1f4-2b8d-4c6e-9f0a-5d3b7e1c8a42","name":"Acme Renewal Q1","stage":"In progress","amount":50000,"close_date":"2026-03-31","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}]}}}}},"summary":"List related records","tags":["RecordRelationships"]},"patch":{"description":"Replaces the linked records for to-one and many-to-many relationships with the records in `data`: links not listed are removed. For one-to-many relationships the listed records are linked additively; pass `id: null` to unlink every related record first.","operationId":"updateRecordRelationship","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"relationship","required":true,"in":"path","description":"The relationship field name as defined in the object’s schema, e.g. `people` or `companies`.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRelationshipDto"},"examples":{"replace":{"summary":"Set a person’s deals","value":{"data":[{"type":"deal","id":"e7c9a1f4-2b8d-4c6e-9f0a-5d3b7e1c8a42"}]}}}}}},"responses":{"200":{"description":"The relationship was replaced. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Replace related records","tags":["RecordRelationships"]},"delete":{"description":"Removes the links to the records in `data` from the given relationship. The records themselves are not deleted.","operationId":"deleteRecordRelationship","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"relationship","required":true,"in":"path","description":"The relationship field name as defined in the object’s schema, e.g. `people` or `companies`.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRelationshipDto"},"examples":{"unlink":{"summary":"Unlink a deal from a person","value":{"data":[{"type":"deal","id":"e7c9a1f4-2b8d-4c6e-9f0a-5d3b7e1c8a42"}]}}}}}},"responses":{"200":{"description":"The links were removed. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Unlink related records","tags":["RecordRelationships"]}},"/workspaces/{workspace}/objects/{object}/records/{id}/attachments":{"get":{"description":"Returns the attachments on a record, both user uploads and files extracted from emails. Omit `page` to return all attachments.","operationId":"listRecordAttachments","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`. Omit to return all attachments.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of attachments to skip before the first result.","required":false},"limit":{"type":"number","minimum":1,"description":"The maximum number of attachments to return per page.","required":true}},"type":"object"}}],"responses":{"200":{"description":"The record’s attachments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRecordAttachmentsListResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1},"data":[{"_id":"3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24","name":"proposal.pdf","_created_at":"2026-01-15T09:30:00.000Z","_created_by":null,"source":"user","mime_type":"application/pdf","size_bytes":482133}]}}}}},"summary":"List record attachments","tags":["RecordAttachments"]},"post":{"description":"Links a previously uploaded file (see the upload-URL endpoint) to the record and returns the updated record.","operationId":"addRecordAttachment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddFileToRecordDto"},"examples":{"attach":{"summary":"Attach an uploaded PDF","value":{"name":"proposal.pdf","key":"attachments/acme/person/3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24/proposal.pdf","attachmentId":"3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24"}}}}}},"responses":{"201":{"description":"The record with the new attachment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Attach an uploaded file to a record","tags":["RecordAttachments"]},"put":{"description":"Returns a pre-signed URL for uploading a file. Upload the file contents to `signedUrl` via HTTP PUT, then attach it to the record by POSTing the returned `key` and `attachmentId` to the attachments endpoint.","operationId":"getSignedUrlForRecordAttachmentUpload","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecordFileDto"},"examples":{"upload":{"summary":"Request an upload URL for a PDF","value":{"name":"proposal.pdf"}}}}}},"responses":{"200":{"description":"The pre-signed upload URL and the keys to attach the file.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedUrlForRecordAttachmentUploadResponse"},"example":{"data":{"signedUrl":"https://storage.clarify.ai/attachments/acme/person/3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24/proposal.pdf?signature=...","key":"attachments/acme/person/3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24/proposal.pdf","attachmentId":"3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24","entity":"person","_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71"}}}}}},"summary":"Request an attachment upload URL","tags":["RecordAttachments"]}},"/workspaces/{workspace}/objects/{object}/records/{id}/attachments/{attachmentId}":{"get":{"description":"Returns a short-lived signed URL for downloading the attachment contents.","operationId":"getRecordAttachment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"attachmentId","required":true,"in":"path","description":"The unique ID of the attachment.","schema":{"type":"string"}}],"responses":{"200":{"description":"The signed download URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRecordAttachmentResponse"},"example":{"data":{"url":"https://storage.clarify.ai/attachments/acme/person/3b9f5c7d-6e2a-4f8b-9d1c-0a7e5b3f9d24/proposal.pdf?signature=..."}}}}}},"summary":"Get an attachment download URL","tags":["RecordAttachments"]},"delete":{"description":"Removes an attachment from the record and returns the updated record. This cannot be undone.","operationId":"deleteRecordAttachment","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"attachmentId","required":true,"in":"path","description":"The unique ID of the attachment.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The record without the deleted attachment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Delete a record attachment","tags":["RecordAttachments"]}},"/workspaces/{workspace}/objects/{object}/records/{record}/merges":{"post":{"description":"Merges the source records listed in `sources` into the target record. Field values and relationships are combined onto the target, and the source records are deleted. This cannot be undone.","operationId":"mergeRecords","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"record","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeRecordsDto"},"examples":{"merge":{"summary":"Merge a duplicate company","value":{"data":{"type":"company","attributes":{"sources":["c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"]}}}}}}}},"responses":{"204":{"description":"The records were merged. The response body is empty."}},"summary":"Merge records","tags":["Records"]}},"/workspaces/{workspace}/objects/{object}/resources/{id}":{"get":{"description":"Returns a single resource as a JSON:API document. Use `include` to embed related resources under `relationships` and return them in `included`.","operationId":"getResource","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the record.","schema":{"type":"string"}},{"name":"include","required":false,"in":"query","description":"Comma-separated relationship names to embed under `relationships` and return in `included`, e.g. `include=company,deals`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}},"included":[],"meta":{}}}}},"403":{"description":"The resource exists but the authenticated caller has no access to it."},"404":{"description":"No resource with this ID exists on the object."}},"summary":"Get a resource","tags":["Resources"]}},"/workspaces/{workspace}/objects/{object}/resources":{"get":{"description":"Returns a paginated JSON:API collection of an object’s resources. Use `include` to embed related resources and `filter` to narrow results by field — a bare value is an exact match, including on collection fields (`filter[email_addresses]=jane@acme.com`); shorthand operators are parsed from the value (`filter[status]=active,pending`, `filter[amount]=>100`, `filter[name]=*Smith*`, `filter[assigned]=null`), or name them explicitly (`filter[start][Is on or after]=2025-01-01`, `filter[domains][Contains]=acme`). To filter on a relationship field, include that relationship: `filter[author.name]=John&include=author`.","operationId":"getResources","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"description":"The maximum number of records to return per page (up to 500).","default":500,"type":"number","minimum":1,"required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"include","required":false,"in":"query","description":"Comma-separated relationship names to embed under `relationships` and return in `included`, e.g. `include=company,deals`.","schema":{"type":"string"}},{"name":"filter","required":false,"in":"query","description":"Nested filter object keyed by field name, e.g. `filter[status]=active` or `filter[amount][Greater than]=100`. See the endpoint description for the full operator syntax.","schema":{"additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":{"type":"string"}}]},"type":"object"}}],"responses":{"200":{"description":"A page of matching resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcesResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":50},"data":[{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}],"included":[]}}}}},"summary":"List resources","tags":["Resources"]},"post":{"description":"Creates a resource of the given object type. The `type` in the body must match the `object` path parameter. Returns the created resource as a JSON:API document.","operationId":"createResource","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResourceDto"},"examples":{"create":{"summary":"Create a person","value":{"data":{"type":"person","attributes":{"name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88"}}}}}}}},"responses":{"201":{"description":"The created resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceResponse"},"example":{"data":{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}},"included":[],"meta":{}}}}}},"summary":"Create a resource","tags":["Resources"]}},"/workspaces/{workspace}/objects/{object}/lists/{list}/resources":{"get":{"description":"Returns a paginated JSON:API collection of the resources that belong to a specific list, applying the list’s membership on top of any `filter` you pass. Use `include` to embed related resources.","operationId":"getListResources","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"list","required":true,"in":"path","description":"The unique ID of the list.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"include","required":false,"in":"query","description":"Comma-separated relationship names to embed under `relationships` and return in `included`, e.g. `include=company,deals`.","schema":{"type":"string"}},{"name":"filter","required":false,"in":"query","description":"Nested filter object keyed by field name, e.g. `filter[status]=active` or `filter[amount][Greater than]=100`. See the endpoint description for the full operator syntax.","schema":{"additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":{"type":"string"}}]},"type":"object"}}],"responses":{"200":{"description":"A page of the list’s resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcesResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":50},"data":[{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}],"included":[]}}}}},"summary":"List resources in a list","tags":["resources"]}},"/workspaces/{workspace}/objects/{object}/deleted-resources":{"get":{"description":"Returns a paginated JSON:API collection of the object’s recently deleted records, newest deletion first. Each resource’s `attributes` are the record’s field values as they stood at the moment of deletion, plus `_deleted_at`. Deletions older than 30 days are not returned. Narrow the window with `filter[_deleted_at][Less than]=1787273241` (epoch seconds). Unlike `/resources`, this endpoint accepts neither `include` — `included` is always empty — nor `sortOrder`.","operationId":"getDeletedResources","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":50,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":50},"type":"object"}},{"name":"filter","required":false,"in":"query","description":"Deletion-time filter, e.g. `filter[_deleted_at][Less than]=1787273241`. The value is epoch seconds. `_deleted_at` is the only field that can be filtered.","schema":{"additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":{"type":"string"}}]},"type":"object"}}],"responses":{"200":{"description":"A page of recently deleted resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcesResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":50},"data":[{"type":"person","id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","attributes":{"_id":"5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71","name":{"first_name":"Jane","last_name":"Doe"},"email_addresses":{"items":["jane@acme.com"]},"job_title":"VP of Marketing","company_id":"c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z","_deleted_at":"2026-02-10T12:00:00.000Z"},"relationships":{}}],"included":[]}}}}},"summary":"List deleted resources","tags":["Resources"]}},"/workspaces/{workspace}/schemas":{"get":{"description":"Returns every object schema in the workspace as a cursor-paginated list of JSON:API resources. Each resource holds the full JSON Schema for one object type, including its fields, relationships, and presentation metadata.","operationId":"getSchemas","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}}],"responses":{"200":{"description":"The workspace object schemas.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfSchemasResponse"},"example":{"links":{"next":null},"data":[{"id":"https://getclarify.ai/schemas/entities/c_project","type":"schema","attributes":{"$schema":"https://json-schema.org/draft/2020-12/clarify","$id":"https://getclarify.ai/schemas/entities/c_project","title":"Project","type":"object","xClarifyNamespace":"objects","xClarifyLabel":{"singular":"Project","plural":"Projects"},"xClarifyAIDescription":"A customer project tracked alongside deals and companies.","properties":{"name":{"type":"string","title":"Name","xClarifyPrimary":true},"status":{"type":["string","null"],"title":"Status","enum":["Planning","In progress","Complete"]},"company_id":{"type":["string","null"],"title":"Company","xClarifyRelationship":{"kind":"many-to-one","entity":"company","field":"projects"}}}}}]}}}}},"summary":"List object schemas","tags":["Schemas"]},"patch":{"description":"Adds or removes options on enum (single- and multi-select) fields for one object type. The request carries exactly one item in `data`; each field in `meta` names an `append` or `remove` operation. To modify several object types, send separate requests.","operationId":"patchEnumFieldValues","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaPropertiesPatchDto"},"examples":{"append":{"summary":"Append an option to a status field","value":{"data":[{"type":"schema-properties","id":"https://getclarify.ai/schemas/entities/c_project","attributes":{"status":{"enum":["Planning","In progress","Complete","On hold"],"xClarifyEnumMetadata":{"Planning":{"id":"planning","rank":0,"color":"blue"},"In progress":{"id":"in_progress","rank":1,"color":"amber"},"Complete":{"id":"complete","rank":2,"color":"green"},"On hold":{"id":"on_hold","rank":3,"color":"red"}}}},"meta":{"status":{"enum":"append"}}}]}}}}}},"responses":{"200":{"description":"The validation result for the patched field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaPropertiesPatchResponseDto"},"example":{"data":[{"id":"https://getclarify.ai/schemas/entities/c_project","type":"schema-validation-result","attributes":{"isValid":true}}]}}}}},"summary":"Add or remove enum field values","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/objects":{"post":{"description":"Creates a new custom object type in the workspace and returns its generated JSON Schema. The name is normalized to a `c_`-prefixed identifier (for example \"Sales Order\" becomes `c_sales_order`).","operationId":"createCustomObject","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomObjectDto"},"examples":{"create":{"summary":"Create a Project object","value":{"name":"Project","plural":"Projects","description":"A customer project tracked alongside deals and companies.","icon":"Briefcase","backgroundColor":"blue"}}}}}},"responses":{"201":{"description":"The created custom object schema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaResponseDto"},"example":{"data":{"type":"schema","id":"https://getclarify.ai/schemas/entities/c_project","attributes":{"$schema":"https://json-schema.org/draft/2020-12/clarify","$id":"https://getclarify.ai/schemas/entities/c_project","title":"Project","type":"object","xClarifyNamespace":"objects","xClarifyLabel":{"singular":"Project","plural":"Projects"},"xClarifyAIDescription":"A customer project tracked alongside deals and companies.","properties":{"name":{"type":"string","title":"Name","xClarifyPrimary":true},"status":{"type":["string","null"],"title":"Status","enum":["Planning","In progress","Complete"]},"company_id":{"type":["string","null"],"title":"Company","xClarifyRelationship":{"kind":"many-to-one","entity":"company","field":"projects"}}}}}}}}},"400":{"description":"Invalid name format"},"422":{"description":"Object already exists"}},"summary":"Create a custom object","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/objects/{object}":{"put":{"description":"Replaces the full JSON Schema for an object type. The request body is the complete schema document, and its `$id` must match the object in the path. The change is applied asynchronously: the response returns a task you can poll to track progress.","operationId":"updateEntitySchema","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEntitySchemaDto"},"examples":{"replace":{"summary":"Add a budget field to the Project object","value":{"$schema":"https://json-schema.org/draft/2020-12/clarify","$id":"https://getclarify.ai/schemas/entities/c_project","title":"Project","type":"object","xClarifyNamespace":"objects","xClarifyLabel":{"singular":"Project","plural":"Projects"},"xClarifyAIDescription":"A customer project tracked alongside deals and companies.","properties":{"name":{"type":"string","title":"Name","xClarifyPrimary":true},"status":{"type":["string","null"],"title":"Status","enum":["Planning","In progress","Complete"]},"company_id":{"type":["string","null"],"title":"Company","xClarifyRelationship":{"kind":"many-to-one","entity":"company","field":"projects"}},"budget":{"type":["number","null"],"title":"Budget"}}}}}}}},"responses":{"200":{"description":"The queued schema-modification task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncTaskResponse"},"example":{"data":{"type":"async-task","id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","attributes":{"_id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","type":"schema_modification","progress":0,"total":null,"metadata":{"entity":"c_project"},"queued_at":"2026-01-15T09:30:00.000Z","started_at":null,"completed_at":null,"failed_at":null,"error_code":null,"_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-01-15T09:30:00.000Z"}}}}}}},"summary":"Replace an object schema","tags":["Schemas"]},"delete":{"description":"Deletes a custom object type and all of its records. The deletion runs asynchronously: the response returns a task you can poll to track progress. Only custom (`c_*`) objects can be deleted. This cannot be undone.","operationId":"deleteCustomObject","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"object","required":true,"in":"path","description":"The custom object type to delete (a `c_*` identifier).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The queued schema-modification task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncTaskResponse"},"example":{"data":{"type":"async-task","id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","attributes":{"_id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","type":"schema_modification","progress":0,"total":null,"metadata":{"entity":"c_project"},"queued_at":"2026-01-15T09:30:00.000Z","started_at":null,"completed_at":null,"failed_at":null,"error_code":null,"_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-01-15T09:30:00.000Z"}}}}}},"422":{"description":"Cannot delete this object"}},"summary":"Delete a custom object","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/{entity}/fields-order":{"patch":{"description":"Sets the display order of an object type’s fields. The `order` array lists every field name in the desired order. The change is applied asynchronously and the response body is empty.","operationId":"updateSchemaPropertyOrder","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"entity","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaPropertyOrderPatchDto"},"examples":{"reorder":{"summary":"Reorder the Project fields","value":{"data":{"type":"schema-property-order","attributes":{"order":["name","status","company_id"]}}}}}}}},"responses":{"202":{"description":"The reorder was accepted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Reorder object fields","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/{entity}/fields-visibility":{"patch":{"description":"Shows or hides an object type’s fields on the record detail view. The `hiddenInDetails` map keys each field name to a boolean, where `true` hides the field. The change is applied asynchronously and the response body is empty.","operationId":"updateSchemaPropertyVisibility","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"entity","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaPropertyVisibilityPatchDto"},"examples":{"hide":{"summary":"Hide the status field on the detail view","value":{"data":{"type":"schema-property-visibility","attributes":{"hiddenInDetails":{"status":true}}}}}}}}},"responses":{"202":{"description":"The visibility change was accepted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Set object field visibility","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/{entity}/properties":{"post":{"description":"Adds one or more non-relationship fields to an object type. Each key in `attributes` is a new field name mapped to its JSON Schema, and every type except `boolean` must include `\"null\"` — declare `[\"string\", \"null\"]` rather than `\"string\"`, because the column behind such a field is nullable and a non-nullable declaration would reject its own stored values. Fields that already exist are rejected — this endpoint never overwrites. The change is applied asynchronously and the response body is empty.","operationId":"createSchemaProperties","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"entity","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSchemaPropertiesDto"},"examples":{"addField":{"summary":"Add a budget field to the Project object","value":{"data":{"type":"schema-properties","attributes":{"budget":{"type":["number","null"],"title":"Budget"}}}}}}}}},"responses":{"202":{"description":"The new fields were accepted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Add object fields","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/{entity}/relationships":{"post":{"description":"Creates relationship fields between object types. The `attributes` map is keyed first by object type, then by field name, and both sides of each relationship must be supplied together so the pairing is consistent. On `one-to-many` and `many-to-many` sides, the field must declare `\"oneOf\": [{ \"$ref\": \"https://getclarify.ai/schemas/core/collectionOfIds\" }, { \"type\": \"null\" }]` — the exact `$ref` string is required. The change is applied asynchronously and the response body is empty.","operationId":"createSchemaRelationshipProperties","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"entity","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRelationshipDto"},"examples":{"relate":{"summary":"Relate Project to Company","value":{"data":{"type":"relationship","attributes":{"c_project":{"company_id":{"title":"Company","type":["string","null"],"xClarifyRelationship":{"kind":"many-to-one","entity":"company","field":"projects"}}},"company":{"projects":{"title":"Projects","oneOf":[{"$ref":"https://getclarify.ai/schemas/core/collectionOfIds"},{"type":"null"}],"xClarifyRelationship":{"kind":"one-to-many","entity":"c_project","field":"company_id"}}}}}}}}}}},"responses":{"202":{"description":"The new relationships were accepted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Add object relationships","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/{entity}/relationships/{fieldName}":{"delete":{"description":"Deletes a relationship field from an object type, along with its counterpart field on the related object. The deletion runs asynchronously: the response returns a task you can poll to track progress. Deleting an already-removed relationship is a no-op that still returns a task.","operationId":"deleteSchemaRelationshipProperty","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"entity","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"fieldName","required":true,"in":"path","description":"The name of the relationship field to delete.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"200":{"description":"The queued schema-modification task.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncTaskResponse"},"example":{"data":{"type":"async-task","id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","attributes":{"_id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","user_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","type":"schema_modification","progress":0,"total":null,"metadata":{"entity":"c_project"},"queued_at":"2026-01-15T09:30:00.000Z","started_at":null,"completed_at":null,"failed_at":null,"error_code":null,"_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-01-15T09:30:00.000Z"}}}}}}},"summary":"Delete an object relationship","tags":["Schemas"]}},"/workspaces/{workspace}/schemas/{entity}/activities":{"get":{"description":"Returns the history of schema changes for an object type as a paginated list of activities. Each activity groups the change events for one modification, such as adding or editing a field.","operationId":"getSchemaActivities","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"entity","required":true,"in":"path","description":"The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}}],"responses":{"200":{"description":"The object’s schema change history.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfActivitiesResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"id":"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f","type":"activity","attributes":{"_id":"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f","_created_at":"2026-02-01T17:45:00.000Z","aggKey":"b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e:clarify:update","data":[{"_id":"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f","_created_at":"2026-02-01T17:45:00.000Z","type":"clarify:update","actor":{"_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","anonymous_id":null,"entity":"user","source_id":null},"object":{"_id":"b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e","anonymous_id":null,"entity":"schema","diff":[{"op":"add","path":["properties","budget"],"val":{"type":["number","null"],"title":"Budget"}}]}}]}}]}}}}},"summary":"List schema activities","tags":["Schemas"]}},"/workspaces/{workspace}/users":{"get":{"description":"Returns the workspace’s users as a paginated JSON:API list. Each user includes their roles.","operationId":"getUsers","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}}],"responses":{"200":{"description":"The workspace’s users.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfUsersResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"user","id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","attributes":{"_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","name":{"first_name":"Alex","last_name":"Rivera"},"roles":{"items":["member"]},"email":"alex@acme.com","profile_picture":"https://storage.clarify.ai/avatars/acme/alex-rivera.png","last_active_at":"2026-02-01T17:45:00.000Z","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}]}}}}},"summary":"List users","tags":["Users"]}},"/workspaces/{workspace}/users/{userId}":{"get":{"description":"Returns a single workspace user as a JSON:API resource, including their roles and the time they were last active.","operationId":"getUser","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUserResponse"},"example":{"data":{"type":"user","id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","attributes":{"_id":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","name":{"first_name":"Alex","last_name":"Rivera"},"roles":{"items":["member"]},"email":"alex@acme.com","profile_picture":"https://storage.clarify.ai/avatars/acme/alex-rivera.png","last_active_at":"2026-02-01T17:45:00.000Z","_created_at":"2026-01-15T09:30:00.000Z","_updated_at":"2026-02-01T17:45:00.000Z"}}}}}}},"summary":"Get a user","tags":["Users"]}},"/workspaces/{workspace}/settings":{"get":{"description":"Returns every workspace setting keyed by name, with defaults applied for settings the workspace has not overridden.","operationId":"readAllWorkspaceSettings","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}}],"responses":{"200":{"description":"All settings keyed by name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSettingsDto"},"example":{"orgDescription":"Acme Corp builds industrial hardware and software.","dealDetectionEnabled":true}}}}},"summary":"List workspace settings","tags":["WorkspaceSettings"]},"post":{"description":"Sets the value of a workspace setting by key. Read-only settings are rejected, and some settings require admin permissions.","operationId":"writeWorkspaceSetting","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteWorkspaceSettingDto"},"examples":{"write":{"summary":"Set the org description","value":{"key":"orgDescription","value":"Acme Corp builds industrial hardware and software."}}}}}},"responses":{"201":{"description":"The setting was written. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Write a workspace setting","tags":["WorkspaceSettings"]},"delete":{"description":"Removes the stored value of a workspace setting so it falls back to its default. Read-only settings are rejected, and some settings require admin permissions.","operationId":"deleteWorkspaceSetting","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceSettingDto"},"examples":{"reset":{"summary":"Reset the org description","value":{"key":"orgDescription"}}}}}},"responses":{"200":{"description":"The setting was reset. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Reset a workspace setting","tags":["WorkspaceSettings"]}},"/workspaces/{workspace}/settings/{key}":{"get":{"description":"Returns the value of a single workspace setting; the default value when the workspace has not overridden it.","operationId":"readWorkspaceSettings","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"The setting key, e.g. `orgDescription`. Read-only settings cannot be mutated.","schema":{"type":"string","enum":["orgDescription","dealDetectionEnabled","dealDetectionPrompt","dealSummaryEnabled","dealSummaryPrompt","dealFieldUpdatesEnabled","meetingRecordingScope","lockMeetingRecordingScope","meetingPrepScope","publishMeetingPrepToCalendar","meetingSummaryEnabled","meetingTemplates","meetingTaskScope","companyEmailDomains","meetingRecorderName","enableRecorderBackground","meetingRecorderBackground","meetingVideoStorageDisabled","externalMeetingSummaryEnabled","billingOveragesDisabled","billingOverageSpendLimitDollars","billingSeatSpendLimitsEnabled","billingSeatSpendLimitCredits","billingSeatSpendLimitCreditsUserOverrides","billingUseLegacyPricing","advancedEnrichmentsOverride","maxActiveCampaignsOverride","maxCustomObjectsOverride","maxConnectedAccountsOverride","reverseTrialEndOverride","freeWorkspaceCreditLimitOverride","enablePrivateMeetingIngestion","enableZeroParticipantMeetingIngestion","enableAttachmentIngestion","emailLocalParts","excludeInternalIngestion","ingestionRules","ingestionRecordCreation","emailBrandingFooter","historicalSyncPeriodDays","closedWonDealStage","closedLostDealStage","fiscalYearOffset"]}}],"responses":{"200":{"description":"The setting value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSettingReadDto"},"example":{"value":"Acme Corp builds industrial hardware and software."}}}}},"summary":"Get a workspace setting","tags":["WorkspaceSettings"]}},"/workspaces/{workspace}/workflows/{id}":{"get":{"description":"Returns a single workflow as a JSON:API resource, including its trigger and the blocks that make up its automation graph.","operationId":"getWorkflow","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the workflow.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested workflow.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowResponse"},"example":{"data":{"type":"workflow","id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","attributes":{"_id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","name":"Create a task for every new deal","description":"When a deal is created, add a follow-up task for the owner.","enabled":true,"type":"workflow","published_at":"2026-01-15T09:30:00.000Z","trigger":{"_id":"trigger","plugin_id":"on:clarify:create:record","filters":[],"input":{"entity":"deal"},"prev":null,"next":"create_task"},"blocks":{"create_task":{"_id":"create_task","plugin_id":"clarify:create:record","filters":[],"input":{"entity":"task","attributes":{"name":"Follow up on new deal"}},"prev":"trigger","next":null}},"exits":{},"run_limits":{},"_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Get a workflow","tags":["Workflows"]},"patch":{"description":"Applies a partial update to a workflow: only the fields present in `attributes` are changed. Use it to rename, enable or disable, or edit the trigger and blocks. Returns the updated workflow.","operationId":"updateWorkflow","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the workflow.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowRequestDto"},"examples":{"enable":{"summary":"Enable a workflow","value":{"data":{"type":"workflow","id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","attributes":{"enabled":true}}}}}}}},"responses":{"200":{"description":"The updated workflow.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowResponse"},"example":{"data":{"type":"workflow","id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","attributes":{"_id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","name":"Create a task for every new deal","description":"When a deal is created, add a follow-up task for the owner.","enabled":true,"type":"workflow","published_at":"2026-01-15T09:30:00.000Z","trigger":{"_id":"trigger","plugin_id":"on:clarify:create:record","filters":[],"input":{"entity":"deal"},"prev":null,"next":"create_task"},"blocks":{"create_task":{"_id":"create_task","plugin_id":"clarify:create:record","filters":[],"input":{"entity":"task","attributes":{"name":"Follow up on new deal"}},"prev":"trigger","next":null}},"exits":{},"run_limits":{},"_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Update a workflow","tags":["Workflows"]},"delete":{"description":"Deletes a workflow. The deletion is applied asynchronously and the response body is empty. This cannot be undone.","operationId":"deleteWorkflow","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique ID of the workflow.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"responses":{"202":{"description":"The deletion was accepted. The response body is empty.","content":{"application/json":{"example":{}}}}},"summary":"Delete a workflow","tags":["Workflows"]}},"/workspaces/{workspace}/workflows":{"get":{"description":"Returns the workspace’s workflows as an offset-paginated list of JSON:API resources. Use the `type` filter to return only sequences (campaigns) or general workflows.","operationId":"getWorkflows","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Offset pagination, e.g. `page[offset]=0&page[limit]=100`.","schema":{"properties":{"offset":{"default":0,"type":"number","minimum":0,"description":"The number of records to skip before the first result.","required":false},"limit":{"default":500,"type":"number","minimum":1,"maximum":500,"description":"The maximum number of records to return per page (up to 500).","required":false}},"default":{"offset":0,"limit":500},"type":"object"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order, e.g. `sortOrder[column]=_created_at&sortOrder[dir]=DESC`.","schema":{"properties":{"column":{"description":"The field name to sort by.","type":"string","minLength":1,"required":true},"dir":{"type":"string","enum":["ASC","DESC"],"description":"The sort direction.","required":true}},"type":"object"}},{"name":"filter","required":false,"in":"query","description":"Filters applied to the workflow list.","schema":{"properties":{"type":{"type":"string","required":true}},"type":"object"}}],"responses":{"200":{"description":"The matching workflows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOfWorkflowsResponse"},"example":{"links":{"next":null,"prev":null},"meta":{"total_records":1,"total_pages":1,"offset":0,"limit":500},"data":[{"type":"workflow","id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","attributes":{"_id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","name":"Create a task for every new deal","description":"When a deal is created, add a follow-up task for the owner.","enabled":true,"type":"workflow","published_at":"2026-01-15T09:30:00.000Z","trigger":{"_id":"trigger","plugin_id":"on:clarify:create:record","filters":[],"input":{"entity":"deal"},"prev":null,"next":"create_task"},"blocks":{"create_task":{"_id":"create_task","plugin_id":"clarify:create:record","filters":[],"input":{"entity":"task","attributes":{"name":"Follow up on new deal"}},"prev":"trigger","next":null}},"exits":{},"run_limits":{},"_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}]}}}}},"summary":"List workflows","tags":["Workflows"]},"post":{"description":"Creates a workflow from a trigger and a set of blocks. Create it disabled and enable it once the automation graph is complete. Returns the created workflow.","operationId":"createWorkflow","parameters":[{"name":"workspace","required":true,"in":"path","description":"The workspace slug — the `{slug}` segment of your Clarify workspace URL.","schema":{"type":"string"}},{"name":"silent","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, suppresses in-app and Slack notifications for this mutation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowRequestDto"},"examples":{"create":{"summary":"Create a task-on-new-deal workflow","value":{"data":{"type":"workflow","attributes":{"name":"Create a task for every new deal","description":"When a deal is created, add a follow-up task for the owner.","enabled":false,"exits":{},"run_limits":{},"type":"workflow","trigger":{"_id":"trigger","plugin_id":"on:clarify:create:record","filters":[],"input":{"entity":"deal"},"prev":null,"next":"create_task"},"blocks":{"create_task":{"_id":"create_task","plugin_id":"clarify:create:record","filters":[],"input":{"entity":"task","attributes":{"name":"Follow up on new deal"}},"prev":"trigger","next":null}}}}}}}}}},"responses":{"201":{"description":"The created workflow.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowResponse"},"example":{"data":{"type":"workflow","id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","attributes":{"_id":"f2a4c6e8-0b1d-4e3f-8a5c-7d9e1f3a5b7c","name":"Create a task for every new deal","description":"When a deal is created, add a follow-up task for the owner.","enabled":true,"type":"workflow","published_at":"2026-01-15T09:30:00.000Z","trigger":{"_id":"trigger","plugin_id":"on:clarify:create:record","filters":[],"input":{"entity":"deal"},"prev":null,"next":"create_task"},"blocks":{"create_task":{"_id":"create_task","plugin_id":"clarify:create:record","filters":[],"input":{"entity":"task","attributes":{"name":"Follow up on new deal"}},"prev":"trigger","next":null}},"exits":{},"run_limits":{},"_created_at":"2026-01-15T09:30:00.000Z","_created_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81","_updated_at":"2026-02-01T17:45:00.000Z","_updated_by":"7d4e2f9a-1b3c-4d5e-8f6a-9c0b2d4e6f81"}}}}}}},"summary":"Create a workflow","tags":["Workflows"]}}},"info":{"title":"Clarify API","description":"The Clarify API OpenAPI documentation","version":"0.1","contact":{}},"tags":[{"name":"Activities"},{"name":"Campaigns"},{"name":"Comments"},{"name":"Layouts"},{"name":"ListRows"},{"name":"Lists"},{"name":"MeetingRecordings"},{"name":"ObjectAccess"},{"name":"RecordAccess"},{"name":"RecordAttachments"},{"name":"RecordRelationships"},{"name":"Records"},{"name":"Resources"},{"name":"Schemas"},{"name":"Users"},{"name":"Workflows"},{"name":"WorkspaceSettings"},{"name":"resources"}],"servers":[{"url":"https://api.clarify.ai/v1"}],"components":{"schemas":{"ListOfActivitiesResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["activity"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The ID of the earliest event in the grouped activity."},"_created_at":{"type":"string","format":"date-time","description":"The time the earliest event in the group was created."},"aggKey":{"type":"string","description":"The key the events were grouped by, combining the record and change type."},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","minLength":1,"description":"The unique ID of the event."},"_created_at":{"type":"string","format":"date-time","description":"When the event occurred."},"type":{"type":"string","enum":["clarify:create","ClarifyCreate","clarify:update","ClarifyUpdate","clarify:merge","ClarifyMerge","clarify:delete","ClarifyDelete","clarify:add-to-list","ClarifyAddToList","clarify:remove-from-list","ClarifyRemoveFromList","clarify:set-relationship","ClarifySetRelationship","clarify:unset-relationship","ClarifyUnsetRelationship","clarify:grant-access","ClarifyGrantAccess","clarify:update-access","ClarifyUpdateAccess","clarify:revoke-access","ClarifyRevokeAccess","clarify:meeting","ClarifyMeeting"],"description":"The kind of change the event represents."},"actor":{"type":"object","properties":{"_id":{"type":"string","nullable":true,"description":"The ID of the record this item refers to, or `null` if anonymous."},"anonymous_id":{"type":"string","nullable":true,"description":"The anonymous identifier for the item when no record ID is known, or `null`."},"entity":{"type":"string","description":"The object type of the item, e.g. `person`."},"data":{"type":"object","additionalProperties":{},"description":"A snapshot of the item’s field values at the time of the event."},"diff":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["add","update","delete"],"description":"The kind of change: `add`, `update`, or `delete`."},"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"description":"The path to the changed field within the record, as a list of keys and array indices."},"val":{"description":"The new value at the path."},"oldVal":{"description":"The previous value at the path, if the change replaced an existing value."}},"required":["op","path"]},"description":"The list of field-level changes the event applied to the item."},"source_id":{"type":"string","nullable":true,"description":"The identifier of the source that produced the event (e.g. an integration), or `null`."}},"required":["_id","anonymous_id","entity","source_id"],"description":"Who or what triggered the change."},"object":{"type":"object","properties":{"_id":{"type":"string","nullable":true,"description":"The ID of the record this item refers to, or `null` if anonymous."},"anonymous_id":{"type":"string","nullable":true,"description":"The anonymous identifier for the item when no record ID is known, or `null`."},"entity":{"type":"string","description":"The object type of the item, e.g. `person`."},"data":{"type":"object","additionalProperties":{},"description":"A snapshot of the item’s field values at the time of the event."},"diff":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["add","update","delete"],"description":"The kind of change: `add`, `update`, or `delete`."},"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"description":"The path to the changed field within the record, as a list of keys and array indices."},"val":{"description":"The new value at the path."},"oldVal":{"description":"The previous value at the path, if the change replaced an existing value."}},"required":["op","path"]},"description":"The list of field-level changes the event applied to the item."}},"required":["_id","anonymous_id","entity"],"description":"The record the change was applied to; may be absent on partial stored events."},"relationship":{"type":"string","description":"The relationship field involved, for relationship-change events."},"ref":{"type":"object","properties":{"_id":{"type":"string","nullable":true,"description":"The ID of the record this item refers to, or `null` if anonymous."},"anonymous_id":{"type":"string","nullable":true,"description":"The anonymous identifier for the item when no record ID is known, or `null`."},"entity":{"type":"string","description":"The object type of the item, e.g. `person`."},"data":{"type":"object","additionalProperties":{},"description":"A snapshot of the item’s field values at the time of the event."},"diff":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["add","update","delete"],"description":"The kind of change: `add`, `update`, or `delete`."},"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"description":"The path to the changed field within the record, as a list of keys and array indices."},"val":{"description":"The new value at the path."},"oldVal":{"description":"The previous value at the path, if the change replaced an existing value."}},"required":["op","path"]},"description":"The list of field-level changes the event applied to the item."}},"required":["_id","anonymous_id","entity"],"description":"The related record referenced by the change, for relationship events."},"refs":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","nullable":true,"description":"The ID of the record this item refers to, or `null` if anonymous."},"anonymous_id":{"type":"string","nullable":true,"description":"The anonymous identifier for the item when no record ID is known, or `null`."},"entity":{"type":"string","description":"The object type of the item, e.g. `person`."},"data":{"type":"object","additionalProperties":{},"description":"A snapshot of the item’s field values at the time of the event."},"diff":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["add","update","delete"],"description":"The kind of change: `add`, `update`, or `delete`."},"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"description":"The path to the changed field within the record, as a list of keys and array indices."},"val":{"description":"The new value at the path."},"oldVal":{"description":"The previous value at the path, if the change replaced an existing value."}},"required":["op","path"]},"description":"The list of field-level changes the event applied to the item."}},"required":["_id","anonymous_id","entity"]},"description":"The related records referenced by the change, for relationship events."},"origin":{"type":"object","properties":{"_id":{"type":"string","nullable":true,"description":"The ID of the record this item refers to, or `null` if anonymous."},"anonymous_id":{"type":"string","nullable":true,"description":"The anonymous identifier for the item when no record ID is known, or `null`."},"entity":{"type":"string","description":"The object type of the item, e.g. `person`."},"data":{"type":"object","additionalProperties":{},"description":"A snapshot of the item’s field values at the time of the event."},"diff":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["add","update","delete"],"description":"The kind of change: `add`, `update`, or `delete`."},"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"description":"The path to the changed field within the record, as a list of keys and array indices."},"val":{"description":"The new value at the path."},"oldVal":{"description":"The previous value at the path, if the change replaced an existing value."}},"required":["op","path"]},"description":"The list of field-level changes the event applied to the item."}},"required":["_id","anonymous_id","entity"],"description":"The origin record, for merge events."},"target":{"type":"object","properties":{"_id":{"type":"string","nullable":true,"description":"The ID of the record this item refers to, or `null` if anonymous."},"anonymous_id":{"type":"string","nullable":true,"description":"The anonymous identifier for the item when no record ID is known, or `null`."},"entity":{"type":"string","description":"The object type of the item, e.g. `person`."},"data":{"type":"object","additionalProperties":{},"description":"A snapshot of the item’s field values at the time of the event."},"diff":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["add","update","delete"],"description":"The kind of change: `add`, `update`, or `delete`."},"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"description":"The path to the changed field within the record, as a list of keys and array indices."},"val":{"description":"The new value at the path."},"oldVal":{"description":"The previous value at the path, if the change replaced an existing value."}},"required":["op","path"]},"description":"The list of field-level changes the event applied to the item."}},"required":["_id","anonymous_id","entity"],"description":"The target record, for merge events."}},"required":["_id","_created_at","type","actor"]},"description":"The change events that make up this activity."}},"required":["_id","_created_at","aggKey","data"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"RecordResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["record"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."},"meta":{"type":"object","properties":{"effective_access_level":{"type":"string","enum":["owner","edit","view","none"],"description":"The requesting user's effective access to this record (`owner`, `edit`, `view`, or `none`)."}},"description":"Per-request metadata about the resource."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"ListOfCampaignRecipientsResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number"},"total_pages":{"type":"number"},"total_unfiltered":{"type":"number"},"campaign_enabled":{"type":"boolean"},"list_evaluation_status":{"type":"string","enum":["idle","evaluating","error"],"nullable":true},"list_member_count":{"type":"number","nullable":true}},"required":["total_records","total_pages","total_unfiltered","campaign_enabled","list_evaluation_status","list_member_count"]},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["campaign_recipient"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"workflow_run_id":{"type":"string","description":"The ID of this recipient’s run through the campaign. Use it to fetch the full engagement timeline."},"person":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the person record."},"name":{"type":"object","properties":{"first_name":{"type":"string","description":"The person’s first name."},"last_name":{"type":"string","description":"The person’s last name."},"full_name":{"type":"string","description":"The person’s full name (first and last combined)."}},"nullable":true,"description":"The person’s name, or null when the record has no name set."},"email_addresses":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"],"nullable":true,"description":"The person’s email addresses. The campaign sends to the first item."},"avatar_url":{"type":"string","nullable":true,"description":"URL of the person’s profile image, or null when they have none."},"job_title":{"type":"string","nullable":true,"description":"The person’s job title, or null when not known."},"company_id":{"type":"string","nullable":true,"description":"ID of the company this person belongs to, or null when unaffiliated."}},"required":["_id","name","email_addresses","avatar_url","job_title","company_id"],"nullable":true,"description":"The recipient. Null when the run has no linked person record, or that record no longer exists."},"status":{"type":"string","enum":["pending","running","success","failed","cancelled","skipped","waiting","retrying"],"description":"The raw workflow-run state of this recipient’s campaign run. For the delivery status shown in the app, use `filter[status]` to query instead."},"resume_at":{"type":"number","nullable":true,"description":"Unix timestamp (ms) at which a waiting run resumes, or null when the run is not waiting."},"current_block_id":{"type":"string","nullable":true,"description":"The campaign step the recipient is currently waiting on, or null when the run is not waiting."},"started_at":{"type":"string","format":"date-time","nullable":true,"description":"When the recipient entered the campaign."},"ended_at":{"type":"string","format":"date-time","nullable":true,"description":"When the recipient’s run finished, or null while still active."},"exit_reason":{"type":"string","nullable":true,"description":"Why the run ended (for example a reply or an unsubscribe), or null while still active."},"exit_block_id":{"type":"string","nullable":true,"description":"The campaign step at which the run ended, or null."},"has_opened":{"type":"boolean","description":"Whether the recipient opened at least one campaign email."},"has_clicked":{"type":"boolean","description":"Whether the recipient clicked a link in a campaign email."},"has_replied":{"type":"boolean","description":"Whether the recipient replied to a campaign email."},"has_unsubscribed":{"type":"boolean","description":"Whether the recipient unsubscribed."},"last_opened_at":{"type":"string","format":"date-time","nullable":true,"description":"When the recipient most recently opened, or null if never."},"last_clicked_at":{"type":"string","format":"date-time","nullable":true,"description":"When the recipient most recently clicked a link, or null if never."},"last_replied_at":{"type":"string","format":"date-time","nullable":true,"description":"When the recipient most recently replied, or null if never."},"_created_at":{"type":"string","format":"date-time","description":"When this recipient run was created."},"_updated_at":{"type":"string","format":"date-time","description":"When this recipient run was last updated."}},"required":["workflow_run_id","person","status","resume_at","current_block_id","started_at","ended_at","exit_reason","exit_block_id","has_opened","has_clicked","has_replied","has_unsubscribed","last_opened_at","last_clicked_at","last_replied_at","_created_at","_updated_at"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"CreateCommentDto":{"type":"object","properties":{"_id":{"type":"string","format":"uuid","description":"The unique ID of the comment. Generated by the server when omitted on create."},"message":{"description":"The comment body, as a non-empty array of rich-text (BlockNote) nodes.","type":"array","items":{"type":"object","additionalProperties":{}}},"owner_id":{"type":"string","description":"The unique ID of the record the comment is attached to."},"entity":{"description":"The object type of the record the comment is attached to. Must be an object that supports comments (e.g. `person`, `deal`, `task`, or a custom object such as `c_dog`). Lead-finder records (`tam_person`, `tam_company`) cannot be commented on.","type":"string"},"_event_id":{"type":"string","format":"uuid","description":"An optional client-supplied ID for the comment creation event; generated by the server when omitted."}},"required":["message","owner_id","entity"]},"CommentRow":{"type":"object","properties":{"_id":{"type":"string","format":"uuid","description":"The unique ID of the comment. Generated by the server when omitted on create."},"message":{"description":"The comment body, as a non-empty array of rich-text (BlockNote) nodes.","type":"array","items":{"type":"object","additionalProperties":{}}},"owner_id":{"type":"string","description":"The unique ID of the record the comment is attached to."},"entity":{"description":"The object type of the record the comment is attached to. Must be an object that supports comments (e.g. `person`, `deal`, `task`, or a custom object such as `c_dog`). Lead-finder records (`tam_person`, `tam_company`) cannot be commented on.","type":"string"},"_created_at":{"type":"string","format":"date-time","description":"The time the comment was created."},"_created_by":{"type":"string","description":"The ID of the user or agent that created the comment."},"_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the comment was last edited, or `null` if it has never been edited."},"_updated_by":{"type":"string","nullable":true,"description":"The ID of the user or agent that last edited the comment, or `null` if it has never been edited."}},"required":["message","owner_id","entity","_created_at","_created_by","_updated_at","_updated_by"]},"UpdateCommentDto":{"type":"object","properties":{"message":{"description":"The comment body, as a non-empty array of rich-text (BlockNote) nodes.","type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["message"]},"LayoutResponseDto":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the layout."},"tree":{"oneOf":[{"type":"object","properties":{"version":{"type":"number","enum":[1]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavLink"]},"props":{"type":"object","properties":{"entity":{"type":"string","minLength":1},"listId":{"type":"string","minLength":1}},"required":["entity"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","props","children"],"additionalProperties":false},"minItems":1,"maxItems":1}},"required":["version","children"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","enum":[1]},"children":{"type":"array","items":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Tabs"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Tab"]},"props":{"discriminator":{"propertyName":"kind"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["overview"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["emails"]},"name":{"type":"string","minLength":1},"field":{"type":"string","minLength":1},"personField":{"type":"string","minLength":1},"label":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["meetings"]},"name":{"type":"string","minLength":1},"field":{"type":"string","minLength":1},"personField":{"type":"string","minLength":1},"label":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["attachments"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["related-records"]},"name":{"type":"string","minLength":1},"relationshipSlug":{"type":"string","minLength":1},"listId":{"type":"string","nullable":true},"versionId":{"type":"string","nullable":true},"label":{"type":"string","minLength":1}},"required":["kind","name","relationshipSlug"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["campaigns"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["notes"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["snippets"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false}]}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","children"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Widgets"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["FieldsWidget"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Field"]},"props":{"type":"object","properties":{"fieldSlug":{"type":"string","minLength":1}},"required":["fieldSlug"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","children"],"additionalProperties":false}}},"required":["id","type","children"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Sidebar"]},"children":{"type":"array","items":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["FieldsGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Field"]},"props":{"type":"object","properties":{"fieldSlug":{"type":"string","minLength":1}},"required":["fieldSlug"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","props","children"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["MeetingParticipantsGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["MeetingRecording"]}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["RelatedLists"]}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["RelatedRecordsGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1},"relationshipSlug":{"type":"string","minLength":1}},"required":["name","relationshipSlug"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}]}}},"required":["id","type","children"],"additionalProperties":false}]},"minItems":3,"maxItems":3}},"required":["version","children"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","enum":[1]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavLink"]},"props":{"type":"object","properties":{"entity":{"type":"string","minLength":1},"listId":{"type":"string","minLength":1}},"required":["entity"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","props","children"],"additionalProperties":false}}},"required":["version","children"],"additionalProperties":false}],"description":"The layout’s UI tree, shaped by the layout ID (app navigation, a record page, or a list)."},"_created_by":{"type":"string","nullable":true,"description":"The ID of the user who created the layout, if any."},"_updated_by":{"type":"string","nullable":true,"description":"The ID of the user who last updated the layout, if any."},"_created_at":{"type":"string","format":"date-time","nullable":true,"description":"When the layout was created, or null if never persisted."},"_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the layout was last updated, or null if never persisted."}},"required":["_id","tree","_created_by","_updated_by","_created_at","_updated_at"]},"UpdateLayoutBodyDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource to update."},"attributes":{"description":"The field values to change, keyed by field name; omitted fields keep their current values. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{"tree":{"oneOf":[{"type":"object","properties":{"version":{"type":"number","enum":[1]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavLink"]},"props":{"type":"object","properties":{"entity":{"type":"string","minLength":1},"listId":{"type":"string","minLength":1}},"required":["entity"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","props","children"],"additionalProperties":false},"minItems":1,"maxItems":1}},"required":["version","children"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","enum":[1]},"children":{"type":"array","items":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Tabs"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Tab"]},"props":{"discriminator":{"propertyName":"kind"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["overview"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["emails"]},"name":{"type":"string","minLength":1},"field":{"type":"string","minLength":1},"personField":{"type":"string","minLength":1},"label":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["meetings"]},"name":{"type":"string","minLength":1},"field":{"type":"string","minLength":1},"personField":{"type":"string","minLength":1},"label":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["attachments"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["related-records"]},"name":{"type":"string","minLength":1},"relationshipSlug":{"type":"string","minLength":1},"listId":{"type":"string","nullable":true},"versionId":{"type":"string","nullable":true},"label":{"type":"string","minLength":1}},"required":["kind","name","relationshipSlug"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["campaigns"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["notes"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["snippets"]},"name":{"type":"string","minLength":1}},"required":["kind","name"],"additionalProperties":false}]}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","children"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Widgets"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["FieldsWidget"]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Field"]},"props":{"type":"object","properties":{"fieldSlug":{"type":"string","minLength":1}},"required":["fieldSlug"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","children"],"additionalProperties":false}}},"required":["id","type","children"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Sidebar"]},"children":{"type":"array","items":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["FieldsGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["Field"]},"props":{"type":"object","properties":{"fieldSlug":{"type":"string","minLength":1}},"required":["fieldSlug"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","props","children"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["MeetingParticipantsGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["MeetingRecording"]}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["RelatedLists"]}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["RelatedRecordsGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1},"relationshipSlug":{"type":"string","minLength":1}},"required":["name","relationshipSlug"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}]}}},"required":["id","type","children"],"additionalProperties":false}]},"minItems":3,"maxItems":3}},"required":["version","children"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","enum":[1]},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavGroup"]},"props":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false},"children":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["NavLink"]},"props":{"type":"object","properties":{"entity":{"type":"string","minLength":1},"listId":{"type":"string","minLength":1}},"required":["entity"],"additionalProperties":false}},"required":["id","type","props"],"additionalProperties":false}}},"required":["id","type","props","children"],"additionalProperties":false}}},"required":["version","children"],"additionalProperties":false}],"description":"The layout’s UI tree: a recursive structure of nodes describing app navigation, a record page’s regions, or a list’s navigation, depending on the layout ID."}},"required":["tree"],"additionalProperties":true}},"required":["type","id","attributes"],"additionalProperties":false,"description":"The changes to apply."},"meta":{"readOnly":true,"description":"Optional JSON:API meta member carrying request-specific options; not accepted for this resource."}},"required":["data"]},"ListOfListsResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["list"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the list."},"user_id":{"type":"string","description":"The ID of the user who created the list."},"entity":{"type":"string","description":"The object type whose records the list holds, e.g. `deal`."},"title":{"type":"string","description":"The display name of the list."},"emoji":{"type":"string","nullable":true,"description":"The emoji shown next to the list, or `null` if unset."},"description":{"type":"string","description":"A short description of the list."},"type":{"type":"string","enum":["dynamic","static","default"],"description":"The list type: `dynamic` (membership derives from a SQL query), `static` (an explicit set of records), or `default` (the object’s built-in list)."},"state":{"type":"string","enum":["draft","published"],"description":"Whether the list is a `draft` or `published`."},"layout":{"type":"string","enum":["table","board"],"description":"How the list is rendered in the app: `table` or `board`."},"options":{"default":{},"type":"object","properties":{"segmentedByInBoard":{"type":"string","description":"For board layout, the field path whose values group records into columns."},"showFieldNamesInBoard":{"type":"boolean","description":"Whether field names are shown on cards in board layout."},"columnWidths":{"type":"object","additionalProperties":{"type":"number"},"description":"Table column pixel widths, keyed by field path. Absent keys use the default width."},"columnMetrics":{"type":"object","additionalProperties":{"type":"string"},"description":"The aggregation metric shown in the table footer for each column, keyed by field path (e.g. `sum`, `count`)."},"hiddenBoardColumns":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","nullable":true}},"description":"Board columns hidden from view, keyed by segment field path; each value lists the hidden enum values for that field (`null` is the \"Unassigned\" column)."},"hiddenPrimaryCell":{"type":"boolean","description":"Whether the primary (first) cell is hidden on cards in board layout."}},"description":"View-level display options such as column widths and layout."},"query":{"default":null,"type":"object","properties":{"sql":{"type":"string","description":"The SQL query that defines the list membership and ordering."},"nlq":{"type":"string","description":"The original natural-language query, if the SQL was generated from one."},"version":{"type":"number","description":"The view query schema version, used for migrations; an omitted value is treated as version 0 (the oldest)."}},"required":["sql"],"nullable":true,"description":"For dynamic lists, the SQL query that defines membership; `null` for static and default lists.","example":{"sql":"SELECT * FROM person"}},"owner_id":{"type":"string","nullable":true,"description":"The ID of the user who owns the list, or `null` if unowned."},"rank":{"type":"number","description":"The sort position of the list relative to its siblings."},"applied_version_id":{"default":null,"type":"string","nullable":true,"description":"The ID of the currently applied list version, or `null`."},"list_evaluation_status":{"type":"string","enum":["idle","evaluating","error"],"description":"Whether the dynamic list is `idle`, currently `evaluating` its query, or in an `error` state."},"list_evaluation_started_at":{"type":"string","format":"date-time","nullable":true,"description":"When the current evaluation started, or `null` if none is running."},"last_list_evaluation_at":{"type":"string","format":"date-time","nullable":true,"description":"When the list was last evaluated, or `null` if never."},"_updated_at":{"type":"string","format":"date-time","description":"When the list was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the list."},"_created_at":{"type":"string","format":"date-time","description":"When the list was created."},"_created_by":{"type":"string","description":"The ID of the user who created the list."},"effective_access_level":{"type":"string","enum":["owner","edit","view","none"],"description":"The requesting user's effective access to this list (`owner`, `edit`, `view`, or `none`)."}},"required":["_id","user_id","entity","title","emoji","description","type","state","layout","owner_id","rank","list_evaluation_status","list_evaluation_started_at","last_list_evaluation_at","_updated_at","_updated_by","_created_at","_created_by"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"ListResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["list"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the list."},"user_id":{"type":"string","description":"The ID of the user who created the list."},"entity":{"type":"string","description":"The object type whose records the list holds, e.g. `deal`."},"title":{"type":"string","description":"The display name of the list."},"emoji":{"type":"string","nullable":true,"description":"The emoji shown next to the list, or `null` if unset."},"description":{"type":"string","description":"A short description of the list."},"type":{"type":"string","enum":["dynamic","static","default"],"description":"The list type: `dynamic` (membership derives from a SQL query), `static` (an explicit set of records), or `default` (the object’s built-in list)."},"state":{"type":"string","enum":["draft","published"],"description":"Whether the list is a `draft` or `published`."},"layout":{"type":"string","enum":["table","board"],"description":"How the list is rendered in the app: `table` or `board`."},"options":{"default":{},"type":"object","properties":{"segmentedByInBoard":{"type":"string","description":"For board layout, the field path whose values group records into columns."},"showFieldNamesInBoard":{"type":"boolean","description":"Whether field names are shown on cards in board layout."},"columnWidths":{"type":"object","additionalProperties":{"type":"number"},"description":"Table column pixel widths, keyed by field path. Absent keys use the default width."},"columnMetrics":{"type":"object","additionalProperties":{"type":"string"},"description":"The aggregation metric shown in the table footer for each column, keyed by field path (e.g. `sum`, `count`)."},"hiddenBoardColumns":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","nullable":true}},"description":"Board columns hidden from view, keyed by segment field path; each value lists the hidden enum values for that field (`null` is the \"Unassigned\" column)."},"hiddenPrimaryCell":{"type":"boolean","description":"Whether the primary (first) cell is hidden on cards in board layout."}},"description":"View-level display options such as column widths and layout."},"query":{"default":null,"type":"object","properties":{"sql":{"type":"string","description":"The SQL query that defines the list membership and ordering."},"nlq":{"type":"string","description":"The original natural-language query, if the SQL was generated from one."},"version":{"type":"number","description":"The view query schema version, used for migrations; an omitted value is treated as version 0 (the oldest)."}},"required":["sql"],"nullable":true,"description":"For dynamic lists, the SQL query that defines membership; `null` for static and default lists.","example":{"sql":"SELECT * FROM person"}},"owner_id":{"type":"string","nullable":true,"description":"The ID of the user who owns the list, or `null` if unowned."},"rank":{"type":"number","description":"The sort position of the list relative to its siblings."},"applied_version_id":{"default":null,"type":"string","nullable":true,"description":"The ID of the currently applied list version, or `null`."},"list_evaluation_status":{"type":"string","enum":["idle","evaluating","error"],"description":"Whether the dynamic list is `idle`, currently `evaluating` its query, or in an `error` state."},"list_evaluation_started_at":{"type":"string","format":"date-time","nullable":true,"description":"When the current evaluation started, or `null` if none is running."},"last_list_evaluation_at":{"type":"string","format":"date-time","nullable":true,"description":"When the list was last evaluated, or `null` if never."},"_updated_at":{"type":"string","format":"date-time","description":"When the list was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the list."},"_created_at":{"type":"string","format":"date-time","description":"When the list was created."},"_created_by":{"type":"string","description":"The ID of the user who created the list."},"effective_access_level":{"type":"string","enum":["owner","edit","view","none"],"description":"The requesting user's effective access to this list (`owner`, `edit`, `view`, or `none`)."}},"required":["_id","user_id","entity","title","emoji","description","type","state","layout","owner_id","rank","list_evaluation_status","list_evaluation_started_at","last_list_evaluation_at","_updated_at","_updated_by","_created_at","_created_by"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"CreateListDto":{"type":"object","properties":{"title":{"type":"string","description":"The display name of the list."},"emoji":{"default":null,"type":"string","nullable":true,"description":"The emoji shown next to the list, or `null` for none."},"description":{"type":"string","description":"A short description of the list."},"layout":{"type":"string","enum":["table","board"],"description":"How the list is rendered in the app: `table` or `board`."},"options":{"default":{},"type":"object","properties":{"segmentedByInBoard":{"type":"string","description":"For board layout, the field path whose values group records into columns."},"showFieldNamesInBoard":{"type":"boolean","description":"Whether field names are shown on cards in board layout."},"columnWidths":{"type":"object","additionalProperties":{"type":"number"},"description":"Table column pixel widths, keyed by field path. Absent keys use the default width."},"columnMetrics":{"type":"object","additionalProperties":{"type":"string"},"description":"The aggregation metric shown in the table footer for each column, keyed by field path (e.g. `sum`, `count`)."},"hiddenBoardColumns":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","nullable":true}},"description":"Board columns hidden from view, keyed by segment field path; each value lists the hidden enum values for that field (`null` is the \"Unassigned\" column)."},"hiddenPrimaryCell":{"type":"boolean","description":"Whether the primary (first) cell is hidden on cards in board layout."}},"description":"View-level display options such as column widths and layout."},"query":{"default":null,"type":"object","properties":{"sql":{"type":"string","description":"The SQL query that defines the list membership and ordering."},"nlq":{"type":"string","description":"The original natural-language query, if the SQL was generated from one."},"version":{"type":"number","description":"The view query schema version, used for migrations; an omitted value is treated as version 0 (the oldest)."}},"required":["sql"],"nullable":true,"description":"For dynamic lists, the SQL query that defines membership; `null` for static and default lists.","example":{"sql":"SELECT * FROM person"}},"rank":{"default":-1,"type":"number","description":"The sort position of the list; defaults to appending after existing lists."},"type":{"type":"string","enum":["dynamic","static"],"description":"The list type: `dynamic` (membership derives from `query`) or `static` (an explicit set of records)."},"state":{"default":"published","type":"string","enum":["draft","published"],"description":"Whether the list is created as a `draft` or `published`."}},"required":["title","description","layout","type"]},"UpdateListDto":{"type":"object","properties":{"title":{"type":"string","description":"The display name of the list."},"emoji":{"type":"string","nullable":true,"description":"The emoji shown next to the list, or `null` if unset."},"description":{"type":"string","description":"A short description of the list."},"layout":{"type":"string","enum":["table","board"],"description":"How the list is rendered in the app: `table` or `board`."},"options":{"default":{},"type":"object","properties":{"segmentedByInBoard":{"type":"string","description":"For board layout, the field path whose values group records into columns."},"showFieldNamesInBoard":{"type":"boolean","description":"Whether field names are shown on cards in board layout."},"columnWidths":{"type":"object","additionalProperties":{"type":"number"},"description":"Table column pixel widths, keyed by field path. Absent keys use the default width."},"columnMetrics":{"type":"object","additionalProperties":{"type":"string"},"description":"The aggregation metric shown in the table footer for each column, keyed by field path (e.g. `sum`, `count`)."},"hiddenBoardColumns":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","nullable":true}},"description":"Board columns hidden from view, keyed by segment field path; each value lists the hidden enum values for that field (`null` is the \"Unassigned\" column)."},"hiddenPrimaryCell":{"type":"boolean","description":"Whether the primary (first) cell is hidden on cards in board layout."}},"description":"View-level display options such as column widths and layout."},"query":{"default":null,"type":"object","properties":{"sql":{"type":"string","description":"The SQL query that defines the list membership and ordering."},"nlq":{"type":"string","description":"The original natural-language query, if the SQL was generated from one."},"version":{"type":"number","description":"The view query schema version, used for migrations; an omitted value is treated as version 0 (the oldest)."}},"required":["sql"],"nullable":true,"description":"For dynamic lists, the SQL query that defines membership; `null` for static and default lists.","example":{"sql":"SELECT * FROM person"}},"rank":{"type":"number","description":"The sort position of the list relative to its siblings."}}},"ListOfRowsRequestDto":{"type":"object","properties":{"sql":{"type":"string","description":"Overrides the list’s own query with a custom SQL statement selecting the rows to export. Defaults to the list’s query."},"search":{"type":"object","properties":{"query":{"type":"string","description":"Case-insensitive substring match against the rows."}},"description":"Full-text search applied on top of the list’s rows."}}},"ListOfRecordsResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["resource"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"RecordingArtifactResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"videoUrl":{"type":"string","nullable":true,"description":"A short-lived signed URL for the recording’s video file, or `null` if no video is available."},"transcriptionUrl":{"type":"string","nullable":true,"description":"A short-lived signed URL for the recording’s transcript file, or `null` if no transcript is available."}},"required":["videoUrl","transcriptionUrl"],"description":"The recording’s signed artifact URLs."}},"required":["data"]},"UploadRecordingTranscriptDto":{"type":"object","properties":{"recordingId":{"type":"string","format":"uuid","description":"A completed manual-upload recording to overwrite. When omitted, a new recording is created on the meeting. Only the artifacts supplied in this request are overwritten; other stored artifacts are left intact."},"transcript":{"type":"array","items":{"type":"object","properties":{"words":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","description":"The transcribed word."},"start_timestamp":{"type":"number","description":"The start time of the word, in seconds from the beginning of the recording."},"end_timestamp":{"type":"number","description":"The end time of the word, in seconds from the beginning of the recording."},"language":{"type":"string","nullable":true,"description":"The detected language of the word as an ISO code, or `null` if unknown."},"confidence":{"type":"number","nullable":true,"description":"The transcription confidence for the word, from 0 to 1, or `null` if unavailable."}},"required":["text","start_timestamp","end_timestamp","language","confidence"]},"description":"The words spoken in this segment."},"speaker":{"type":"string","nullable":true,"description":"The display name of the speaker, or `null` if unattributed."},"speaker_id":{"type":"number","nullable":true,"description":"The numeric ID of the speaker, or `null` if unattributed."},"language":{"type":"string","description":"The primary language of the segment as an ISO code."}},"required":["words","speaker","speaker_id","language"]},"description":"The meeting transcript, as an ordered list of speaker segments."}},"required":["transcript"]},"InitRecordingMediaDto":{"type":"object","properties":{"recordingId":{"type":"string","format":"uuid","description":"A completed manual-upload recording to overwrite. When omitted, a new recording is created on the meeting. Only the artifacts supplied in this request are overwritten; other stored artifacts are left intact."},"contentType":{"type":"string","pattern":"^(audio|video)\\/","description":"The MIME type of the media file to upload; must be an `audio/*` or `video/*` type. Uploaded media is stored for playback and is not transcribed."},"transcript":{"type":"array","items":{"type":"object","properties":{"words":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","description":"The transcribed word."},"start_timestamp":{"type":"number","description":"The start time of the word, in seconds from the beginning of the recording."},"end_timestamp":{"type":"number","description":"The end time of the word, in seconds from the beginning of the recording."},"language":{"type":"string","nullable":true,"description":"The detected language of the word as an ISO code, or `null` if unknown."},"confidence":{"type":"number","nullable":true,"description":"The transcription confidence for the word, from 0 to 1, or `null` if unavailable."}},"required":["text","start_timestamp","end_timestamp","language","confidence"]},"description":"The words spoken in this segment."},"speaker":{"type":"string","nullable":true,"description":"The display name of the speaker, or `null` if unattributed."},"speaker_id":{"type":"number","nullable":true,"description":"The numeric ID of the speaker, or `null` if unattributed."},"language":{"type":"string","description":"The primary language of the segment as an ISO code."}},"required":["words","speaker","speaker_id","language"]},"description":"An optional transcript to attach to the same recording as the media, so one recording carries both. Applied to the recording when the upload is confirmed, then used to generate the summary."}},"required":["contentType"]},"InitRecordingMediaResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"recordingId":{"type":"string","description":"The ID of the created recording, used to confirm the upload."},"meetingId":{"type":"string","description":"The ID of the meeting the recording is attached to."},"key":{"type":"string","description":"The storage key the media is uploaded to."},"upload":{"type":"object","properties":{"url":{"type":"string","description":"The URL to submit the multipart form POST to."},"fields":{"type":"object","additionalProperties":{"type":"string"},"description":"Form fields to include in the multipart POST alongside the file, exactly as returned."}},"required":["url","fields"],"description":"The presigned S3 POST policy to submit the media file to."}},"required":["recordingId","meetingId","key","upload"]}},"required":["data"]},"UploadTranscriptDto":{"type":"object","properties":{"transcript":{"type":"array","items":{"type":"object","properties":{"words":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","description":"The transcribed word."},"start_timestamp":{"type":"number","description":"The start time of the word, in seconds from the beginning of the recording."},"end_timestamp":{"type":"number","description":"The end time of the word, in seconds from the beginning of the recording."},"language":{"type":"string","nullable":true,"description":"The detected language of the word as an ISO code, or `null` if unknown."},"confidence":{"type":"number","nullable":true,"description":"The transcription confidence for the word, from 0 to 1, or `null` if unavailable."}},"required":["text","start_timestamp","end_timestamp","language","confidence"]},"description":"The words spoken in this segment."},"speaker":{"type":"string","nullable":true,"description":"The display name of the speaker, or `null` if unattributed."},"speaker_id":{"type":"number","nullable":true,"description":"The numeric ID of the speaker, or `null` if unattributed."},"language":{"type":"string","description":"The primary language of the segment as an ISO code."}},"required":["words","speaker","speaker_id","language"]},"description":"The meeting transcript, as an ordered list of speaker segments."}},"required":["transcript"]},"ObjectAccessListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["object-access"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the access delegation."},"owner_id":{"type":"string","description":"The ID of the user who granted access."},"delegate_id":{"type":"string","description":"The ID of the user who receives access."},"entity":{"type":"string","enum":["meeting","message"],"description":"The object type this delegation applies to."},"_created_at":{"type":"string","format":"date-time","description":"When the delegation was created."},"_created_by":{"type":"string","nullable":true,"description":"The ID of the user who created the delegation, or null if unknown."},"_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the delegation was last updated, or null if it has never been updated."},"_updated_by":{"type":"string","nullable":true,"description":"The ID of the user who last updated the delegation, or null if it has never been updated."}},"required":["_id","owner_id","delegate_id","entity","_created_at","_created_by","_updated_at","_updated_by"]}},"required":["type","id","attributes"]}}},"required":["data"]},"CreateObjectAccessRequestDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["object-access"]},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{"delegate_id":{"type":"string","description":"The ID of the user to grant access to."}},"required":["delegate_id"],"additionalProperties":true}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource to create."}},"required":["data"]},"ObjectAccessResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["object-access"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the access delegation."},"owner_id":{"type":"string","description":"The ID of the user who granted access."},"delegate_id":{"type":"string","description":"The ID of the user who receives access."},"entity":{"type":"string","enum":["meeting","message"],"description":"The object type this delegation applies to."},"_created_at":{"type":"string","format":"date-time","description":"When the delegation was created."},"_created_by":{"type":"string","nullable":true,"description":"The ID of the user who created the delegation, or null if unknown."},"_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the delegation was last updated, or null if it has never been updated."},"_updated_by":{"type":"string","nullable":true,"description":"The ID of the user who last updated the delegation, or null if it has never been updated."}},"required":["_id","owner_id","delegate_id","entity","_created_at","_created_by","_updated_at","_updated_by"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"ObjectRecordAccessListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["object-record-access"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the grant."},"object_id":{"type":"string","description":"The unique ID of the shared record."},"grantee_type":{"type":"string","enum":["user","workspace","group","email","public"],"description":"Who the grant is for: `user` for a single workspace member, `workspace` for everyone in the workspace."},"grantee_id":{"type":"string","nullable":true,"description":"The unique ID of the grantee. Set to the user’s ID for `user` grants; `null` for `workspace` grants."},"access_level":{"type":"string","enum":["view","edit","manage","owner"],"description":"The level of access the grant confers: `view` read-only, `edit` read-write. `owner` marks the record’s owner — returned read-only to identify the owner; it cannot be granted, changed, or revoked through this API (use the reassign-owner endpoint)."},"_created_at":{"type":"string","format":"date-time","description":"When the grant was created."},"_created_by":{"type":"string","nullable":true,"description":"The unique ID of the user who created the grant."},"_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the grant was last updated."},"_updated_by":{"type":"string","nullable":true,"description":"The unique ID of the user who last updated the grant."}},"required":["_id","object_id","grantee_type","grantee_id","access_level","_created_at","_created_by","_updated_at","_updated_by"]}},"required":["type","id","attributes"]}},"meta":{"type":"object","properties":{"viewerAccess":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["public-link","workspace-public","legacy-delegate","entity-wide-delegate"]},"grantee_id":{"type":"string","nullable":true},"access_level":{"type":"string","enum":["view","edit","manage","owner"],"nullable":true},"owners":{"type":"array","items":{"type":"object","properties":{"owner_id":{"type":"string"},"access_level":{"type":"string","enum":["view","edit","manage","owner"],"nullable":true}},"required":["owner_id","access_level"]},"description":"The record owners whose delegation grants this viewer access, each with the access level that owner granted. Empty for paths with no delegating owner, such as public-link or workspace-public sharing."}},"required":["kind","grantee_id","access_level","owners"]}}},"required":["viewerAccess"]}},"required":["data","meta"]},"CreateObjectRecordAccessRequestDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["object-record-access"]},"attributes":{"discriminator":{"propertyName":"grantee_type"},"oneOf":[{"type":"object","properties":{"grantee_type":{"type":"string","enum":["user"],"description":"Share the record with a single workspace member."},"grantee_id":{"type":"string","description":"The unique ID of the user to share the record with."},"access_level":{"type":"string","enum":["view","edit"],"description":"The level of access to grant: `view` for read-only access, `edit` for read-write access."},"notify":{"type":"boolean","description":"Whether to notify the grantee that the record was shared with them. Defaults to `true`. Ignored for `workspace` grants, which never notify."}},"required":["grantee_type","grantee_id","access_level"]},{"type":"object","properties":{"grantee_type":{"type":"string","enum":["workspace"],"description":"Share the record with everyone in the workspace."},"grantee_id":{"type":"null","description":"Must be `null` for a workspace-wide grant."},"access_level":{"type":"string","enum":["view","edit"],"description":"The level of access to grant: `view` for read-only access, `edit` for read-write access."},"notify":{"type":"boolean","description":"Whether to notify the grantee that the record was shared with them. Defaults to `true`. Ignored for `workspace` grants, which never notify."}},"required":["grantee_type","grantee_id","access_level"]}]}},"required":["type","attributes"],"additionalProperties":false}},"required":["data"]},"ObjectRecordAccessResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["object-record-access"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the grant."},"object_id":{"type":"string","description":"The unique ID of the shared record."},"grantee_type":{"type":"string","enum":["user","workspace","group","email","public"],"description":"Who the grant is for: `user` for a single workspace member, `workspace` for everyone in the workspace."},"grantee_id":{"type":"string","nullable":true,"description":"The unique ID of the grantee. Set to the user’s ID for `user` grants; `null` for `workspace` grants."},"access_level":{"type":"string","enum":["view","edit","manage","owner"],"description":"The level of access the grant confers: `view` read-only, `edit` read-write. `owner` marks the record’s owner — returned read-only to identify the owner; it cannot be granted, changed, or revoked through this API (use the reassign-owner endpoint)."},"_created_at":{"type":"string","format":"date-time","description":"When the grant was created."},"_created_by":{"type":"string","nullable":true,"description":"The unique ID of the user who created the grant."},"_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the grant was last updated."},"_updated_by":{"type":"string","nullable":true,"description":"The unique ID of the user who last updated the grant."}},"required":["_id","object_id","grantee_type","grantee_id","access_level","_created_at","_created_by","_updated_at","_updated_by"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"CreateBulkObjectRecordAccessRequestDto":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["object-record-access"]},"attributes":{"discriminator":{"propertyName":"grantee_type"},"oneOf":[{"type":"object","properties":{"grantee_type":{"type":"string","enum":["user"],"description":"Share the record with a single workspace member."},"grantee_id":{"type":"string","description":"The unique ID of the user to share the record with."},"access_level":{"type":"string","enum":["view","edit"],"description":"The level of access to grant: `view` for read-only access, `edit` for read-write access."},"notify":{"type":"boolean","description":"Whether to notify the grantee that the record was shared with them. Defaults to `true`. Ignored for `workspace` grants, which never notify."}},"required":["grantee_type","grantee_id","access_level"]},{"type":"object","properties":{"grantee_type":{"type":"string","enum":["workspace"],"description":"Share the record with everyone in the workspace."},"grantee_id":{"type":"null","description":"Must be `null` for a workspace-wide grant."},"access_level":{"type":"string","enum":["view","edit"],"description":"The level of access to grant: `view` for read-only access, `edit` for read-write access."},"notify":{"type":"boolean","description":"Whether to notify the grantee that the record was shared with them. Defaults to `true`. Ignored for `workspace` grants, which never notify."}},"required":["grantee_type","grantee_id","access_level"]}]}},"required":["type","attributes"],"additionalProperties":false},"minItems":1,"maxItems":1000}},"required":["data"]},"UpdateObjectRecordAccessRequestDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["object-record-access"]},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{"access_level":{"type":"string","enum":["view","edit"],"description":"The new access level for the grant: `view` for read-only access, `edit` for read-write access."}},"required":["access_level"],"additionalProperties":true}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource to create."}},"required":["data"]},"CreateRecordDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{},"additionalProperties":true}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource to create."},"match_on":{"type":"string","minLength":1,"description":"Enables upsert mode: the name of a unique field (marked unique in the schema, e.g. \"domains\" for companies, \"email_addresses\" for people) to match incoming records against existing ones. When a value matches exactly one existing record, the attributes are merged into it and its ID is returned instead of inserting a new row; a value that matches multiple existing records errors. Scalar unique fields match exactly; collection fields match case-insensitively. Non-unique fields are rejected."}},"required":["data"]},"CreateRecordResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["record"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"CreateBulkRecordDto":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{},"additionalProperties":true}},"required":["type","attributes"],"additionalProperties":false},"description":"The resources to create."},"match_on":{"type":"string","minLength":1,"description":"Enables upsert mode: the name of a unique field (marked unique in the schema, e.g. \"domains\" for companies, \"email_addresses\" for people) to match incoming records against existing ones. When a value matches exactly one existing record, the attributes are merged into it and its ID is returned instead of inserting a new row; a value that matches multiple existing records errors. Scalar unique fields match exactly; collection fields match case-insensitively. Non-unique fields are rejected."}},"required":["data"]},"CreateBulkRecordResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["record"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"UpdateRecordDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource to update."},"attributes":{"description":"The field values to change, keyed by field name; omitted fields keep their current values. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{},"additionalProperties":true}},"required":["type","id","attributes"],"additionalProperties":false,"description":"The changes to apply."},"meta":{"type":"object","additionalProperties":{"type":"object","properties":{"collection":{"type":"string","enum":["append","remove","replace"],"description":"How to apply the update to a collection field: `append` adds items, `remove` deletes items, `replace` overwrites the collection (the default)."},"array":{"type":"string","enum":["append"],"description":"How to apply the update to an array field: `append` adds items rather than replacing the array."},"object":{"type":"string","enum":["merge"],"description":"How to apply the update to an object field: `merge` combines keys rather than replacing the object."}}},"description":"Per-field write strategies, keyed by field name; controls how array, collection, and object values are merged instead of replaced."}},"required":["data"]},"UpdateRecordsDto":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource to update."},"attributes":{"description":"The field values to change, keyed by field name; omitted fields keep their current values. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{},"additionalProperties":true}},"required":["type","id","attributes"],"additionalProperties":false},"description":"The per-resource changes to apply."},"meta":{"type":"object","additionalProperties":{"type":"object","properties":{"collection":{"type":"string","enum":["append","remove","replace"],"description":"How to apply the update to a collection field: `append` adds items, `remove` deletes items, `replace` overwrites the collection (the default)."},"array":{"type":"string","enum":["append"],"description":"How to apply the update to an array field: `append` adds items rather than replacing the array."},"object":{"type":"string","enum":["merge"],"description":"How to apply the update to an object field: `merge` combines keys rather than replacing the object."}}},"description":"Per-field write strategies, keyed by field name; controls how array, collection, and object values are merged instead of replaced."}},"required":["data"],"additionalProperties":false},"DeleteRecordsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"},"minItems":1,"description":"The IDs of the records to delete."}},"required":["items"]},"UpdateRelationshipDto":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The object type of the related record, e.g. `person`."},"id":{"type":"string","nullable":true,"description":"The unique ID of the related record, or `null` to clear a to-one relationship."}},"required":["type","id"]},"description":"The related records to link."}},"required":["data"]},"CreateRecordFileDto":{"type":"object","properties":{"name":{"type":"string","description":"The file name, including its extension."}},"required":["name"]},"GetSignedUrlForRecordAttachmentUploadResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"signedUrl":{"type":"string","description":"Pre-signed URL to upload the file contents to via HTTP PUT."},"key":{"type":"string","description":"The storage key to pass back when attaching the file."},"attachmentId":{"type":"string","description":"The attachment ID to pass back when attaching the file."},"entity":{"type":"string","description":"The object type of the target record."},"_id":{"type":"string","description":"The unique ID of the target record."}},"required":["signedUrl","key","attachmentId","entity","_id"],"description":"The signed upload URL and identifiers to attach the file."}},"required":["data"]},"AddFileToRecordDto":{"type":"object","properties":{"name":{"type":"string","description":"The file name, including its extension."},"key":{"type":"string","description":"The storage key returned by the signed-upload-URL request."},"attachmentId":{"type":"string","description":"The attachment ID returned by the signed-upload-URL request."}},"required":["name","key","attachmentId"]},"GetRecordAttachmentsListResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of attachments across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the attachment."},"name":{"type":"string","description":"The file name, including its extension."},"_created_at":{"type":"string","description":"ISO 8601 timestamp of when the attachment was added."},"_created_by":{"type":"string","nullable":true,"description":"The ID of the user who added the attachment, if known."},"source":{"type":"string","enum":["user","email"],"description":"How the attachment reached the record: uploaded by a user or extracted from an email."},"mime_type":{"type":"string","nullable":true,"description":"The MIME type of the file."},"size_bytes":{"type":"integer","nullable":true,"description":"The file size in bytes, if known."},"messageRef":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the source email message."},"_created_at":{"type":"string","description":"ISO 8601 timestamp of the source email message."},"received_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when the source email was received (the true email date). Null if unknown."},"account_email":{"type":"string","nullable":true,"description":"Email address of the connected account that ingested the source email. Null for messages ingested before provenance tracking."}},"required":["_id","_created_at","received_at","account_email"],"description":"Reference to the email message the attachment came from; present for `email`-sourced attachments."},"sender":{"type":"object","properties":{"personId":{"type":"string","nullable":true,"description":"The person record ID of the sender, if matched."},"name":{"type":"string","nullable":true,"description":"The display name of the sender."}},"required":["personId","name"],"description":"The sender of the source email; present for `email`-sourced attachments."}},"required":["_id","name","_created_at","_created_by","source","mime_type","size_bytes"]},"description":"The page of attachments."}},"required":["links","meta","data"]},"GetRecordAttachmentResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string","description":"Short-lived signed URL to download the attachment contents."}},"required":["url"],"description":"The download URL for the attachment."}},"required":["data"]},"MergeRecordsDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{"sources":{"type":"array","items":{"type":"string"},"minItems":1,"description":"The IDs of the source records to merge into the target record; source records are deleted after the merge."}},"required":["sources"],"additionalProperties":true}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource to create."}},"required":["data"]},"ResourceResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type, e.g. `person` or `deal`."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","additionalProperties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","additionalProperties":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]}}],"nullable":true,"description":"A single resource reference, an array of references, or `null` when the relationship is empty."},"meta":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"description":"Total number of related records for a to-many relationship, independent of the number embedded in `data` (which is capped)."}},"description":"Metadata about the relationship."}},"required":["data"]},"description":"Related resources keyed by relationship name, present when requested via `include`."},"meta":{"type":"object","properties":{"effective_access_level":{"type":"string","enum":["owner","edit","view","none"],"description":"The requesting user's effective access to this record (`owner`, `edit`, `view`, or `none`)."}},"description":"Per-request metadata about the resource."}},"required":["type","id","attributes"],"description":"The resource."},"included":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The resource type, e.g. `person` or `deal`."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","additionalProperties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","additionalProperties":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]}}],"nullable":true,"description":"A single resource reference, an array of references, or `null` when the relationship is empty."},"meta":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"description":"Total number of related records for a to-many relationship, independent of the number embedded in `data` (which is capped)."}},"description":"Metadata about the relationship."}},"required":["data"]},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"Related resources requested via `include`."},"meta":{"type":"object","properties":{},"description":"Response metadata."}},"required":["data","included","meta"]},"ResourcesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The resource type, e.g. `person` or `deal`."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","additionalProperties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","additionalProperties":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]}}],"nullable":true,"description":"A single resource reference, an array of references, or `null` when the relationship is empty."},"meta":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"description":"Total number of related records for a to-many relationship, independent of the number embedded in `data` (which is capped)."}},"description":"Metadata about the relationship."}},"required":["data"]},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."},"included":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The resource type, e.g. `person` or `deal`."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","additionalProperties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","additionalProperties":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]}}],"nullable":true,"description":"A single resource reference, an array of references, or `null` when the relationship is empty."},"meta":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"description":"Total number of related records for a to-many relationship, independent of the number embedded in `data` (which is capped)."}},"description":"Metadata about the relationship."}},"required":["data"]},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"Related resources requested via `include`."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."}},"description":"Response metadata."}},"required":["data","included","meta"]},"CreateResourceDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{},"additionalProperties":true},"relationships":{"type":"object","additionalProperties":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of the referenced resource."},"id":{"type":"string","description":"The unique ID of the referenced resource."}},"required":["type","id"]}}],"description":"The linked resource reference, or an array of references for a to-many relationship."}},"required":["data"]},"description":"Related resources to link on creation, keyed by relationship name."}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource to create."}},"required":["data"]},"ListOfSchemasResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."}},"required":["next"],"description":"Pagination links."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["schema"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","data"]},"CreateCustomObjectDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":32,"description":"The name will be normalized to a c_ prefixed identifier (e.g., \"Sales Order\" becomes \"c_sales_order\")"},"plural":{"type":"string","minLength":1,"maxLength":32,"description":"The plural name will be used to display the object type in the UI"},"description":{"type":"string","maxLength":256,"description":"The description is stored as AI context for this object type"},"icon":{"type":"string","enum":["Box","Package","FileText","Folder","Ticket","Briefcase","Store","Component","Layers","MapPin","Globe","BankNote","CreditCard","Receipt","ShoppingCart","Car","Truck","Book","GraduationCap","Shield","Key","Megaphone","Flag","Target","Trophy","Rocket","Zap","Phone","Image","Tag","Wrench","Heart","Users","Handshake","Database","FlaskConical"],"description":"Icon name for the object avatar. Must be one of the curated avatar icon names (xClarifyPresentation.icon)."},"backgroundColor":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","neutral"],"description":"Background color for the object avatar. A Tailwind color name rendered at the 500 shade (xClarifyPresentation.backgroundColor)."},"properties":{"type":"object","additionalProperties":{"type":"object","properties":{},"additionalProperties":true,"description":"A JSON Schema field definition for the object."},"description":"Initial fields for the object, keyed by field name and valued by JSON Schema. Built-in system fields are always added and cannot be overridden."}},"required":["name","plural"]},"SchemaResponseDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["schema"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","additionalProperties":{},"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"AsyncTaskResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["async-task"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the async task."},"user_id":{"type":"string","description":"The ID of the user who initiated the task."},"type":{"type":"string","enum":["sync_emails","sync_calendar","schema_modification","ai_field_config_generation","import_data","tam_import","seed_voice_skill","integration_provider_readiness","google_sync_emails","google_sync_calendar"],"description":"The kind of work the task performs."},"progress":{"type":"number","nullable":true,"description":"The number of units processed so far, or `null` if not yet reported."},"total":{"type":"number","nullable":true,"description":"The total number of units to process, or `null` if not yet known."},"metadata":{"nullable":true,"description":"Task-specific metadata; the shape depends on the task `type`."},"queued_at":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 timestamp of when the task was queued, or `null` if not yet queued."},"started_at":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 timestamp of when the task started running, or `null` if not yet started."},"completed_at":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 timestamp of when the task completed successfully, or `null` if not yet completed."},"failed_at":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 timestamp of when the task failed, or `null` if it has not failed."},"error_code":{"type":"string","nullable":true,"description":"The error code if the task failed, or `null` if it did not fail."},"_updated_at":{"type":"string","format":"date-time","description":"When the task was last updated."},"_created_at":{"type":"string","format":"date-time","description":"When the task was created."}},"required":["_id","user_id","type","_updated_at","_created_at"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"UpdateEntitySchemaDto":{"type":"object","additionalProperties":{},"description":"The complete JSON Schema document for the object type. Its `$id` must match the object in the path."},"SchemaPropertiesPatchDto":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["schema-properties"],"description":"The JSON:API resource type."},"id":{"description":"The schema id of the object being patched, in the form https://getclarify.ai/schemas/entities/{entity}.","type":"string"},"attributes":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"enum":{"type":"array","items":{"type":"string"},"description":"The list of allowed values for the enum field."},"xClarifyEnumMetadata":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"The stable unique ID of the enum option."},"rank":{"type":"number","description":"The sort position of the option relative to its siblings."},"color":{"type":"string","description":"The color assigned to the option, as a color name."}},"required":["id","rank","color"]},"description":"Per-option metadata (id, rank, color) keyed by enum value."}},"additionalProperties":false},{"type":"object","properties":{"properties":{"type":"object","properties":{"items":{"type":"object","properties":{"items":{"description":"The enum definition applied to each item of the multi-select field.","type":"object","properties":{"enum":{"type":"array","items":{"type":"string"},"description":"The list of allowed values for the enum field."},"xClarifyEnumMetadata":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"The stable unique ID of the enum option."},"rank":{"type":"number","description":"The sort position of the option relative to its siblings."},"color":{"type":"string","description":"The color assigned to the option, as a color name."}},"required":["id","rank","color"]},"description":"Per-option metadata (id, rank, color) keyed by enum value."}},"additionalProperties":false}},"required":["items"],"description":"The array item schema wrapper."}},"required":["items"],"description":"The nested JSON Schema wrapper for a multi-select enum field."}},"required":["properties"],"additionalProperties":false}]},"description":"Enum field patches keyed by field name. Each value carries the field’s `enum` values and `xClarifyEnumMetadata`; for a multi-select field these are nested under `properties.items.items`."},"meta":{"type":"object","additionalProperties":{"type":"object","properties":{"enum":{"type":"string","enum":["append","remove"],"description":"The enum operation to apply to the matching field: `append` to add values or `remove` to drop them."}}},"description":"The operation to apply to each field being patched, keyed by field name."}},"required":["type","id","attributes","meta"],"additionalProperties":false},"minItems":1,"maxItems":1,"description":"A single-element array holding the enum-field patch to apply."}},"required":["data"]},"SchemaPropertiesPatchResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The schema id the patch was applied to."},"type":{"type":"string","enum":["schema-validation-result"],"description":"The JSON:API resource type."},"attributes":{"type":"object","properties":{"isValid":{"type":"boolean","description":"Whether the requested schema change passed validation."},"errors":{"type":"array","items":{},"description":"Validation errors, present when `isValid` is false."},"values":{"type":"object","additionalProperties":{},"description":"The validated field values that were written."}},"required":["isValid"],"description":"The validation result for the patched field."}},"required":["id","type","attributes"]},"description":"The validation results, one per patched field."}},"required":["data"]},"SchemaPropertyOrderPatchDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["schema-property-order"],"description":"The JSON:API resource type."},"attributes":{"type":"object","properties":{"order":{"type":"array","items":{"type":"string"},"minItems":1,"description":"The field names in the desired display order."}},"required":["order"],"additionalProperties":false,"description":"The new field ordering to apply."}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource carrying the new property order."}},"required":["data"],"additionalProperties":false},"SchemaPropertyVisibilityPatchDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["schema-property-visibility"],"description":"The JSON:API resource type."},"attributes":{"type":"object","properties":{"hiddenInDetails":{"type":"object","additionalProperties":{"type":"boolean"},"description":"Field visibility on the detail view, keyed by field name. `true` hides the field."}},"required":["hiddenInDetails"],"additionalProperties":false,"description":"The field visibility changes to apply."}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource carrying the new property visibility."}},"required":["data"],"additionalProperties":false},"CreateSchemaPropertiesDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["schema-properties"],"description":"The JSON:API resource type."},"attributes":{"type":"object","additionalProperties":{},"description":"New fields to add, keyed by field name and valued by JSON Schema."}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource carrying the new fields to add."}},"required":["data"],"additionalProperties":false},"CreateRelationshipDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["relationship"],"description":"The JSON:API resource type."},"attributes":{"description":"Relationship fields keyed first by object type, then by field name. Both sides of each relationship must be supplied together.","type":"object","additionalProperties":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The display name of the relationship field."},"xClarifyPresentation":{"type":"object","properties":{"rank":{"type":"number","description":"The sort position of the field relative to its siblings."}},"required":["rank"],"additionalProperties":false,"description":"Presentation metadata controlling how the field is displayed."},"xClarifyAIField":{"type":"object","properties":{"prompt":{"type":"array","items":{},"description":"The prompt that instructs the AI how to compute the field, as rich-text content blocks."},"isInternetSearchEnabled":{"type":"boolean","description":"Whether the AI may search the internet while computing the field."},"model":{"type":"string","enum":["fast","smart"],"description":"The AI model used to compute the field."},"runOnCreate":{"type":"boolean","description":"Deprecated. Whether the field is computed when a record is created."},"triggers":{"type":"array","items":{"type":"object","properties":{"plugin_id":{"type":"string","minLength":1,"description":"The plugin that defines the trigger event."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","minLength":1,"description":"The field whose value the trigger condition is evaluated on."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the trigger to fire."}},"required":["field","condition"],"additionalProperties":false},"description":"Conditions that must all pass for the trigger to fire."},"input":{"type":"object","additionalProperties":{},"description":"The trigger’s configuration, keyed by input name."}},"required":["plugin_id","filters","input"],"additionalProperties":false},"description":"The events that cause the AI field to be recomputed."}},"required":["prompt","isInternetSearchEnabled","model"],"additionalProperties":false,"description":"AI configuration for an AI-generated relationship field, if the relationship is computed."},"type":{"description":"The JSON Schema type of a many-to-one relationship field: a nullable string holding the related record ID."},"xClarifyRelationship":{"type":"object","properties":{"kind":{"type":"string","enum":["many-to-one"],"description":"Fixed to `many-to-one` for this variant."},"entity":{"type":"string","minLength":1,"description":"The object type this relationship points to, e.g. `company`."},"field":{"type":"string","minLength":1,"description":"The name of the counterpart field on the related object."},"mergeable":{"type":"boolean","description":"Whether values on this relationship are combined when two records are merged."},"aiFieldTraversable":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"atDepth":{"type":"number","enum":[1,2],"description":"The relationship-hop depth (1 or 2) at which AI fields may traverse this relationship."}},"required":["atDepth"],"description":"Traversal allowed only up to the given relationship depth."}],"description":"Whether AI fields may traverse this relationship to read the related record’s data; either a boolean or a depth-limited object."},"labelFromEntity":{"type":"boolean","description":"Whether the field title is derived from the related object’s current name instead of the stored title."}},"required":["kind","entity","field"],"additionalProperties":false,"description":"The relationship metadata for this many-to-one field."}},"required":["title","type","xClarifyRelationship"],"additionalProperties":false},{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The display name of the relationship field."},"xClarifyPresentation":{"type":"object","properties":{"rank":{"type":"number","description":"The sort position of the field relative to its siblings."}},"required":["rank"],"additionalProperties":false,"description":"Presentation metadata controlling how the field is displayed."},"xClarifyAIField":{"type":"object","properties":{"prompt":{"type":"array","items":{},"description":"The prompt that instructs the AI how to compute the field, as rich-text content blocks."},"isInternetSearchEnabled":{"type":"boolean","description":"Whether the AI may search the internet while computing the field."},"model":{"type":"string","enum":["fast","smart"],"description":"The AI model used to compute the field."},"runOnCreate":{"type":"boolean","description":"Deprecated. Whether the field is computed when a record is created."},"triggers":{"type":"array","items":{"type":"object","properties":{"plugin_id":{"type":"string","minLength":1,"description":"The plugin that defines the trigger event."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","minLength":1,"description":"The field whose value the trigger condition is evaluated on."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the trigger to fire."}},"required":["field","condition"],"additionalProperties":false},"description":"Conditions that must all pass for the trigger to fire."},"input":{"type":"object","additionalProperties":{},"description":"The trigger’s configuration, keyed by input name."}},"required":["plugin_id","filters","input"],"additionalProperties":false},"description":"The events that cause the AI field to be recomputed."}},"required":["prompt","isInternetSearchEnabled","model"],"additionalProperties":false,"description":"AI configuration for an AI-generated relationship field, if the relationship is computed."},"oneOf":{"description":"The JSON Schema type of a one-to-many relationship field: a nullable collection of related record IDs."},"xClarifyRelationship":{"type":"object","properties":{"kind":{"type":"string","enum":["one-to-many"],"description":"Fixed to `one-to-many` for this variant."},"entity":{"type":"string","minLength":1,"description":"The object type this relationship points to, e.g. `company`."},"field":{"type":"string","minLength":1,"description":"The name of the counterpart field on the related object."},"mergeable":{"type":"boolean","description":"Whether values on this relationship are combined when two records are merged."},"aiFieldTraversable":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"atDepth":{"type":"number","enum":[1,2],"description":"The relationship-hop depth (1 or 2) at which AI fields may traverse this relationship."}},"required":["atDepth"],"description":"Traversal allowed only up to the given relationship depth."}],"description":"Whether AI fields may traverse this relationship to read the related record’s data; either a boolean or a depth-limited object."},"labelFromEntity":{"type":"boolean","description":"Whether the field title is derived from the related object’s current name instead of the stored title."}},"required":["kind","entity","field"],"additionalProperties":false,"description":"The relationship metadata for this one-to-many field."}},"required":["title","oneOf","xClarifyRelationship"],"additionalProperties":false},{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The display name of the relationship field."},"xClarifyPresentation":{"type":"object","properties":{"rank":{"type":"number","description":"The sort position of the field relative to its siblings."}},"required":["rank"],"additionalProperties":false,"description":"Presentation metadata controlling how the field is displayed."},"xClarifyAIField":{"type":"object","properties":{"prompt":{"type":"array","items":{},"description":"The prompt that instructs the AI how to compute the field, as rich-text content blocks."},"isInternetSearchEnabled":{"type":"boolean","description":"Whether the AI may search the internet while computing the field."},"model":{"type":"string","enum":["fast","smart"],"description":"The AI model used to compute the field."},"runOnCreate":{"type":"boolean","description":"Deprecated. Whether the field is computed when a record is created."},"triggers":{"type":"array","items":{"type":"object","properties":{"plugin_id":{"type":"string","minLength":1,"description":"The plugin that defines the trigger event."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","minLength":1,"description":"The field whose value the trigger condition is evaluated on."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the trigger to fire."}},"required":["field","condition"],"additionalProperties":false},"description":"Conditions that must all pass for the trigger to fire."},"input":{"type":"object","additionalProperties":{},"description":"The trigger’s configuration, keyed by input name."}},"required":["plugin_id","filters","input"],"additionalProperties":false},"description":"The events that cause the AI field to be recomputed."}},"required":["prompt","isInternetSearchEnabled","model"],"additionalProperties":false,"description":"AI configuration for an AI-generated relationship field, if the relationship is computed."},"oneOf":{"description":"The JSON Schema type of a many-to-many relationship field: a nullable collection of related record IDs."},"xClarifyRelationship":{"type":"object","properties":{"kind":{"type":"string","enum":["many-to-many"],"description":"Fixed to `many-to-many` for this variant."},"entity":{"type":"string","minLength":1,"description":"The object type this relationship points to, e.g. `company`."},"field":{"type":"string","minLength":1,"description":"The name of the counterpart field on the related object."},"mergeable":{"type":"boolean","description":"Whether values on this relationship are combined when two records are merged."},"aiFieldTraversable":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"atDepth":{"type":"number","enum":[1,2],"description":"The relationship-hop depth (1 or 2) at which AI fields may traverse this relationship."}},"required":["atDepth"],"description":"Traversal allowed only up to the given relationship depth."}],"description":"Whether AI fields may traverse this relationship to read the related record’s data; either a boolean or a depth-limited object."},"labelFromEntity":{"type":"boolean","description":"Whether the field title is derived from the related object’s current name instead of the stored title."}},"required":["kind","entity","field"],"additionalProperties":false,"description":"The relationship metadata for this many-to-many field."}},"required":["title","oneOf","xClarifyRelationship"],"additionalProperties":false}]}}}},"required":["type","attributes"],"additionalProperties":false,"description":"The relationship definition to create."}},"required":["data"],"additionalProperties":false},"ListOfUsersResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["user"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the user."},"name":{"type":"object","properties":{"first_name":{"type":"string","description":"The user’s first name."},"last_name":{"type":"string","description":"The user’s last name."},"full_name":{"type":"string","description":"The user’s full name (first and last combined)."}},"required":["first_name","last_name"],"description":"The user’s name."},"roles":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["super_admin","admin","member"]},"minItems":1,"maxItems":1,"description":"The user’s role, as a single-element array."}},"required":["items"],"description":"The user’s workspace role, as a single-element array. Humans are `admin` or `member`; `super_admin` is reserved for the seeded system service account."},"email":{"type":"string","nullable":true,"description":"The user’s email address."},"profile_picture":{"type":"string","description":"A URL to the user’s profile picture."},"is_service_account":{"type":"boolean","description":"Server-derived. True for a non-human service account (an account with no identity provider). Read-only; not a stored column."},"_created_at":{"oneOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"object","properties":{}}],"description":"The time the user was added to the workspace."},"_updated_at":{"oneOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"object","properties":{}}],"description":"The time the user record was last updated."},"last_active_at":{"oneOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"object","properties":{}}],"nullable":true,"description":"The time the user was last active, derived from the later of their most recent sign-in or API key usage."}},"required":["_id","name","roles","_created_at","_updated_at"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"PublicUserResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["user"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the user."},"name":{"type":"object","properties":{"first_name":{"type":"string","description":"The user’s first name."},"last_name":{"type":"string","description":"The user’s last name."},"full_name":{"type":"string","description":"The user’s full name (first and last combined)."}},"required":["first_name","last_name"],"description":"The user’s name."},"roles":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["super_admin","admin","member"]},"minItems":1,"maxItems":1,"description":"The user’s role, as a single-element array."}},"required":["items"],"description":"The user’s workspace role, as a single-element array. Humans are `admin` or `member`; `super_admin` is reserved for the seeded system service account."},"email":{"type":"string","nullable":true,"description":"The user’s email address."},"profile_picture":{"type":"string","description":"A URL to the user’s profile picture."},"is_service_account":{"type":"boolean","description":"Server-derived. True for a non-human service account (an account with no identity provider). Read-only; not a stored column."},"_created_at":{"oneOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"object","properties":{}}],"description":"The time the user was added to the workspace."},"_updated_at":{"oneOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"object","properties":{}}],"description":"The time the user record was last updated."},"last_active_at":{"oneOf":[{"type":"string","format":"date-time"},{"type":"string"},{"type":"object","properties":{}}],"nullable":true,"description":"The time the user was last active, derived from the later of their most recent sign-in or API key usage."}},"required":["_id","name","roles","_created_at","_updated_at"],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"WriteWorkspaceSettingDto":{"type":"object","properties":{"key":{"description":"The setting key, e.g. `orgDescription`. Read-only settings cannot be mutated.","type":"string","enum":["orgDescription","dealDetectionEnabled","dealDetectionPrompt","dealSummaryEnabled","dealSummaryPrompt","dealFieldUpdatesEnabled","meetingRecordingScope","lockMeetingRecordingScope","meetingPrepScope","publishMeetingPrepToCalendar","meetingSummaryEnabled","meetingTemplates","meetingTaskScope","companyEmailDomains","meetingRecorderName","enableRecorderBackground","meetingRecorderBackground","meetingVideoStorageDisabled","externalMeetingSummaryEnabled","billingOveragesDisabled","billingOverageSpendLimitDollars","billingSeatSpendLimitsEnabled","billingSeatSpendLimitCredits","billingSeatSpendLimitCreditsUserOverrides","billingUseLegacyPricing","advancedEnrichmentsOverride","maxActiveCampaignsOverride","maxCustomObjectsOverride","maxConnectedAccountsOverride","reverseTrialEndOverride","freeWorkspaceCreditLimitOverride","enablePrivateMeetingIngestion","enableZeroParticipantMeetingIngestion","enableAttachmentIngestion","emailLocalParts","excludeInternalIngestion","ingestionRules","ingestionRecordCreation","emailBrandingFooter","historicalSyncPeriodDays","closedWonDealStage","closedLostDealStage","fiscalYearOffset"]},"value":{"description":"The setting value; its type depends on the setting key."}},"required":["key"]},"DeleteWorkspaceSettingDto":{"type":"object","properties":{"key":{"description":"The setting key, e.g. `orgDescription`. Read-only settings cannot be mutated.","type":"string","enum":["orgDescription","dealDetectionEnabled","dealDetectionPrompt","dealSummaryEnabled","dealSummaryPrompt","dealFieldUpdatesEnabled","meetingRecordingScope","lockMeetingRecordingScope","meetingPrepScope","publishMeetingPrepToCalendar","meetingSummaryEnabled","meetingTemplates","meetingTaskScope","companyEmailDomains","meetingRecorderName","enableRecorderBackground","meetingRecorderBackground","meetingVideoStorageDisabled","externalMeetingSummaryEnabled","billingOveragesDisabled","billingOverageSpendLimitDollars","billingSeatSpendLimitsEnabled","billingSeatSpendLimitCredits","billingSeatSpendLimitCreditsUserOverrides","billingUseLegacyPricing","advancedEnrichmentsOverride","maxActiveCampaignsOverride","maxCustomObjectsOverride","maxConnectedAccountsOverride","reverseTrialEndOverride","freeWorkspaceCreditLimitOverride","enablePrivateMeetingIngestion","enableZeroParticipantMeetingIngestion","enableAttachmentIngestion","emailLocalParts","excludeInternalIngestion","ingestionRules","ingestionRecordCreation","emailBrandingFooter","historicalSyncPeriodDays","closedWonDealStage","closedLostDealStage","fiscalYearOffset"]}},"required":["key"]},"WorkspaceSettingReadDto":{"type":"object","properties":{"value":{"description":"The setting value; its type depends on the setting key."}}},"WorkspaceSettingsDto":{"type":"object","properties":{"orgDescription":{"type":"string","description":"Free-text description of the organization, used to ground AI features."},"ingestionRules":{"type":"object","properties":{"action":{"type":"string","enum":["allow","block"],"description":"Whether matching items are allowed (everything else blocked) or blocked (everything else allowed)."},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["email_address"],"description":"The field the rule matches against."},"value":{"oneOf":[{"oneOf":[{"type":"string"},{"type":"object","properties":{"regex":{"type":"string","description":"A regular expression to match against."}},"required":["regex"]}]},{"type":"object","properties":{"pattern":{"type":"string","description":"A glob-style pattern to match against."}},"required":["pattern"]}],"description":"The value to match: an exact string, a `regex` object, or a `pattern` object."}},"required":["type","value"]},"description":"The rules to match against."}},"required":["action","items"],"description":"Allow/block rules for email and calendar ingestion. When an allow list is provided, the block list is ignored. In a block list, a bare domain such as `company.com` or `@company.com` is stored as the address pattern `*@company.com`, so it matches every address at that domain."},"ingestionRecordCreation":{"type":"string","enum":["disabled","selective","always"],"description":"Default record-creation behavior for email/calendar ingestion."},"excludeInternalIngestion":{"type":"string","enum":["none","emails","meetings","all"],"description":"Whether internal (same-domain) emails and meetings are excluded from ingestion."},"enablePrivateMeetingIngestion":{"type":"boolean","description":"Whether private meetings are ingested."},"enableZeroParticipantMeetingIngestion":{"type":"boolean","description":"Whether meetings with no participants are ingested."},"enableAttachmentIngestion":{"type":"boolean","description":"Whether email attachments are ingested onto records."},"dealSummaryEnabled":{"default":true,"type":"boolean","description":"Whether AI deal summaries are generated."},"dealSummaryPrompt":{"type":"array","items":{},"description":"Custom rich-text prompt used when generating deal summaries."},"dealDetectionEnabled":{"type":"boolean","description":"Whether AI deal detection runs. Defaults to enabled."},"dealDetectionPrompt":{"type":"string","description":"Custom prompt used by AI deal detection."},"dealFieldUpdatesEnabled":{"type":"boolean","description":"Whether AI updates deal fields automatically. Defaults to enabled."},"meetingRecordingScope":{"default":"none","type":"string","enum":["all","externalOnly","none"],"description":"Which meetings the recorder joins by default."},"lockMeetingRecordingScope":{"default":false,"type":"boolean","description":"When on, the workspace meeting recording scope applies to all members and per-user overrides are ignored."},"meetingPrepScope":{"default":"all","type":"string","enum":["all","none"],"description":"Which meetings get AI meeting prep."},"publishMeetingPrepToCalendar":{"type":"boolean","description":"Whether meeting prep notes are published to the calendar event."},"meetingSummaryEnabled":{"default":true,"type":"boolean","description":"Whether AI meeting summaries are generated."},"externalMeetingSummaryEnabled":{"default":false,"type":"boolean","description":"Whether meeting summaries are generated for external meetings."},"meetingTemplates":{"default":{"default":{"summaryTemplate":{"instructions":"Summarize what was discussed in the meeting. Keep it concise, factual, and neutral. Capture key points, decisions, blockers, and next steps. Include direct quotes only when they add clarity or context.\n\nUse well formatted bullet points under the section headers. ASCII only. Each line = new bullet.","sections":[{"title":"Overview","content":"Two sentences to three sentences summarizing what happened with minimal formatting."},{"title":"Participants + Context","content":"* Who attended\n* Purpose of the meeting\n* Relevant background or prior context"},{"title":"Key Discussion Points","content":"* Main topics covered\n* Important details shared\n* Notable quotes (optional)"},{"title":"Decisions Made","content":"* Agreements, approvals, or resolved items\n* Ownership for each decision"},{"title":"Open Questions / Issues","content":"* Items needing clarification\n* Risks, blockers, or concerns raised"},{"title":"Action Items & Next Steps","content":"* Tasks, owners, and deadlines\n* Follow-ups required\n* Dependencies or required inputs"},{"title":"Rapport","content":"* Rapport details - anything personal about who they are, what they like, where they are, etc."}]}},"types":{"U0FMRVNESVNDT1ZFUlk":{"summaryTemplate":{"instructions":"Keep each section concise and actionable. Prioritize: pains, workflow gaps, buying triggers, and next steps. Pull in exact quotes where useful. Highlight any numbers, tools, timelines, or commitments they mention. Focus on information that advances qualification, forecasting, or the close.\n\nWrite bullet points in each section. Keep bullets brief with no filler words. Be concise.","sections":[{"title":"Summary","content":"Two sentences to three sentences summarizing what happened with minimal formatting."},{"title":"Company + Buyer Context","content":"* Company overview (industry, size, GTM motion)\n* Buyer role, responsibilities, KPIs\n* Key quotes (their words)"},{"title":"Pain + Use Cases","content":"* Primary pains\n* Current workflow + what's breaking\n* Desired outcomes\n* Specific use cases they emphasized"},{"title":"GTM Tech Stack","content":"* Current CRM + core tooling\n* Supplementary tools (enrichment, dialer, sequences, reporting, notes)\n* What they like / dislike\n* Identified gaps"},{"title":"Competition / Alternatives","content":"* Tools they're evaluating\n* Tools they're replacing\n* Status quo option (keep doing nothing)\n* Must-haves vs nice-to-haves"},{"title":"Product Feedback / Questions","content":"* Product requests they made\n* Confusions or unclear parts of the product\n* Areas they pushed on (AI behavior, accuracy, reporting, workflows, credits, integrations)\n* Key questions that signal buying criteria"},{"title":"BANT","content":"* Budget: Amount, flexibility\n* Authority: Decision maker + influencers\n* Need: Severity + urgency\n* Timeline: Renewals, deadlines, internal constraints"},{"title":"Misc.","content":"* What else was discussed that is important to capture?"},{"title":"Next Steps","content":"* Action items\n* Owners (you/them)\n* Dates + commitments\n* Dependencies (data export, stakeholder loop-in, trial setup)"}]}},"U0FMRVNDTE9TSU5H":{"summaryTemplate":{"instructions":"Focus on commercial signals, decision details, risks, and what is required to close. Capture exact numbers, terms, blockers, and commitments.\n\nWrite bullet points in each section. Keep bullets brief with no filler words. Be concise.","sections":[{"title":"Summary (TL;DR)","content":"* Where they stand in decision process\n* Remaining blockers (their words)\n* Final requirements to close\n* Commercial details they confirmed\n* The one next step that moves the deal to signature"},{"title":"Decision Process","content":"* Where they are in the decision\n* Who signs + remaining approvals\n* Key quotes"},{"title":"Commercials","content":"* Plan / pricing\n* Contract length\n* Budget alignment"},{"title":"Open Questions / Blockers","content":"* Concerns\n* Requirements\n* Competitive pressure"},{"title":"Next Steps","content":"* Actions\n* Owners\n* Deadlines"}]}},"Q1NPTkJPQVJESU5H":{"summaryTemplate":{"instructions":"Focus on highlighting the most important and specific needs identified.\n\nWrite bullet points in each section. Keep bullets brief with no filler words. Be concise.","sections":[{"title":"Goals & Success Criteria","content":"* Goals for the implementation (cost savings, specific features, consolidation, etc.)\n* Agreed upon success metrics and key milestones\n* Timeline expectations and any hard deadlines\n* Team members involved and their roles"},{"title":"Current State & Migration","content":"* What tools or processes they're migrating from\n* Features and workflows that must be replicated\n* Data and integrations to be brought over"},{"title":"Configuration & Setup","content":"* Key workflows and processes to configure\n* User roles and access requirements\n* Reporting and dashboard needs"},{"title":"Training & Adoption","content":"* Training requirements and format preferences\n* Key users who need onboarding\n* Documentation or resources needed"},{"title":"Next Steps","content":"* Action items\n* Owners (you/them)\n* Deadlines"}]}},"Q1NBQ0NPVU5UUkVWSUVX":{"summaryTemplate":{"instructions":"Capture the customer's perspective and account health signals. Focus on usage patterns, satisfaction, expansion opportunities, and renewal risks. Use exact quotes where relevant. Be concise and actionable.\n\nWrite bullet points in each section. Keep bullets brief with no filler words. Be concise.","sections":[{"title":"Summary","content":"* Overall account health and sentiment\n* Key takeaway from the meeting"},{"title":"Usage & Adoption","content":"* How they're using the product (features, workflows, frequency)\n* Team adoption and engagement levels\n* Key metrics or outcomes they've achieved"},{"title":"Feedback & Concerns","content":"* Feature requests or product feedback\n* Concerns or pain points mentioned\n* Key quotes (their words)"},{"title":"Expansion Opportunities","content":"* Additional use cases or teams that could benefit\n* Features they're interested in but not using\n* Upsell or cross-sell signals"},{"title":"Renewal & Risk","content":"* Renewal timeline and considerations\n* Churn risk signals\n* Competitive pressure or alternatives mentioned"},{"title":"Next Steps","content":"* Follow-up actions\n* Owners (you/them)\n* Deadlines or commitments"}]}},"Q1NTVVBQT1JU":{"summaryTemplate":{"instructions":"Document the issue clearly and concisely. Focus on what happened, resolution steps, and prevention. Capture exact error messages, steps to reproduce, and customer impact. Be specific and actionable.\n\nWrite bullet points in each section. Keep bullets brief with no filler words. Be concise.","sections":[{"title":"Summary","content":"* What the issue is\n* Current resolution status"},{"title":"Issue Details","content":"* What the customer reported (their exact words)\n* Steps to reproduce (if applicable)\n* Error messages or symptoms observed\n* When it started and frequency"},{"title":"Root Cause & Resolution","content":"* What caused the issue\n* Steps taken to resolve\n* Workaround provided (if any)\n* Permanent fix status"},{"title":"Impact","content":"* How this affected the customer\n* Number of users affected\n* Business impact or urgency level"},{"title":"Next Steps","content":"* Action items to fully resolve\n* Owners\n* Deadlines\n* Prevention measures"}]}}}},"type":"object","properties":{"default":{"type":"object","properties":{"summaryTemplate":{"type":"object","properties":{"instructions":{"type":"string","maxLength":500,"description":"Overall instructions for generating the summary."},"sections":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":100,"description":"The section heading."},"content":{"type":"string","maxLength":500,"description":"Guidance on what the section should contain."}},"required":["title","content"]},"maxItems":50,"description":"The sections the summary is organized into."}},"required":["instructions","sections"],"description":"The template used when generating meeting summaries."}},"required":["summaryTemplate"],"description":"The template used for meeting types without their own entry in `types`."},"types":{"type":"object","additionalProperties":{"type":"object","properties":{"summaryTemplate":{"type":"object","properties":{"instructions":{"type":"string","maxLength":500,"description":"Overall instructions for generating the summary."},"sections":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":100,"description":"The section heading."},"content":{"type":"string","maxLength":500,"description":"Guidance on what the section should contain."}},"required":["title","content"]},"maxItems":50,"description":"The sections the summary is organized into."}},"required":["instructions","sections"],"description":"The template used when generating meeting summaries."}},"required":["summaryTemplate"]},"description":"Per-meeting-type template overrides, keyed by meeting type ID."}},"required":["default","types"],"description":"Meeting summary templates configured for the workspace."},"meetingTaskScope":{"default":"external","type":"string","enum":["all","external","none"],"description":"Which meetings produce AI-suggested tasks."},"companyEmailDomains":{"type":"array","items":{"type":"string"},"description":"The workspace’s own email domains, used to tell internal from external contacts."},"meetingRecorderName":{"type":"string","maxLength":50,"description":"Display name the meeting recorder bot joins calls with."},"enableRecorderBackground":{"type":"boolean","description":"Whether the recorder bot shows a custom background image."},"meetingRecorderBackground":{"type":"string","description":"URL of the recorder bot’s custom background image."},"meetingVideoStorageDisabled":{"type":"boolean","description":"When enabled, meeting video recordings are not stored — transcript-only mode."},"closedWonDealStage":{"type":"string","description":"The deal stage that counts as closed-won in reporting."},"closedLostDealStage":{"type":"string","description":"The deal stage that counts as closed-lost in reporting."},"fiscalYearOffset":{"type":"number","description":"Offset in months between the fiscal year and the calendar year, used in reporting."},"billingOveragesDisabled":{"default":true,"type":"boolean","description":"Whether on-demand (overage) credit spending is disabled. Defaults to disabled; set to `false` to opt in."},"billingOverageSpendLimitDollars":{"type":"integer","minimum":1,"description":"Per-billing-period cap on on-demand (overage) spend, in whole dollars. Once reached, credit consumption is blocked. Unset means unlimited overages."},"billingSeatSpendLimitsEnabled":{"default":false,"type":"boolean","description":"Whether per-seat spend limits are enabled for the workspace. Defaults to off; when off no per-seat caps are enforced and the config UI is hidden."},"billingSeatSpendLimitCredits":{"type":"integer","minimum":0,"description":"Per-billing-period cap on how many credits each member can consume. `0` blocks all spend; unset means no per-seat limit."},"billingSeatSpendLimitCreditsUserOverrides":{"type":"object","additionalProperties":{"type":"integer","minimum":0},"description":"Per-user overrides of the seat spend cap, keyed by user id (credits; `0` blocks the member). Members without an entry use the workspace default."},"billingUseLegacyPricing":{"type":"boolean","description":"Hidden setting keeping a workspace on legacy (V1) pricing after new pricing is enabled globally."},"historicalSyncPeriodDays":{"type":"integer","minimum":1,"maximum":9125,"description":"How many days of email/calendar history are synced when connecting an account."},"emailLocalParts":{"type":"array","items":{"type":"string"},"description":"Reserved email local parts (the part before `@`) used by workspace email features."},"emailBrandingFooter":{"type":"boolean","description":"Whether outbound emails include the Clarify branding footer."},"advancedEnrichmentsOverride":{"type":"integer","minimum":0,"nullable":true,"description":"Admin override of the advanced-enrichment quota. `0` disables; unset uses the plan default."},"maxActiveCampaignsOverride":{"type":"integer","minimum":1,"maximum":9999,"description":"Admin override of the maximum number of active campaigns. Unset uses the plan default."},"maxCustomObjectsOverride":{"type":"integer","minimum":1,"maximum":9999,"description":"Admin override of the maximum number of custom objects. Unset uses the plan default."},"maxConnectedAccountsOverride":{"type":"integer","minimum":1,"maximum":9999,"description":"Admin override of the maximum number of connected accounts. Unset uses the plan default."},"reverseTrialEndOverride":{"type":"string","format":"date-time","description":"Admin override of the reverse-trial end date (ISO 8601). When set, the trial expires at this instant instead of the default period."},"freeWorkspaceCreditLimitOverride":{"type":"integer","minimum":0,"maximum":10000000,"description":"Admin override of the credit allowance for workspaces without a paid subscription. Replaces the plan-default included credits."}}},"WorkflowResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["workflow"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the workflow."},"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null if it has never been published."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"_created_at":{"type":"string","format":"date-time","description":"The time the workflow was created."},"_created_by":{"type":"string","description":"The ID of the user who created the workflow."},"_updated_at":{"type":"string","format":"date-time","description":"The time the workflow was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the workflow."},"type":{"type":"string","enum":["sequence"],"description":"The workflow type. `sequence` workflows are email sequences (campaigns)."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:email-validation","clarify:send:email","general:delay:for","on:clarify:add-to-list","on:manual:execution"],"description":"The plugin that defines what this block does, restricted to plugins valid in sequence workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:email-validation","clarify:send:email","general:delay:for","on:clarify:add-to-list","on:manual:execution"],"description":"The plugin that defines what this block does, restricted to plugins valid in sequence workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["_id","name","description","enabled","published_at","_created_at","_created_by","_updated_at","_updated_by","type","trigger","blocks"]},{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the workflow."},"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null if it has never been published."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"_created_at":{"type":"string","format":"date-time","description":"The time the workflow was created."},"_created_by":{"type":"string","description":"The ID of the user who created the workflow."},"_updated_at":{"type":"string","format":"date-time","description":"The time the workflow was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the workflow."},"type":{"type":"string","enum":["system"],"description":"The workflow type. `system` workflows back built-in features and are hidden."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["_id","name","description","enabled","published_at","_created_at","_created_by","_updated_at","_updated_by","type","trigger","blocks"]},{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the workflow."},"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null if it has never been published."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"_created_at":{"type":"string","format":"date-time","description":"The time the workflow was created."},"_created_by":{"type":"string","description":"The ID of the user who created the workflow."},"_updated_at":{"type":"string","format":"date-time","description":"The time the workflow was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the workflow."},"type":{"type":"string","enum":["workflow"],"description":"The workflow type. `workflow` covers general-purpose automations."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:create:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:update:record","clarify:upsert:record","general:delay:for","on:clarify:add-to-list","on:clarify:change-relationship","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:clarify:unset-relationship","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","webhook:send:outbound","code:execute","ai:generate","on:general:time:heartbeat"],"description":"The plugin that defines what this block does, restricted to plugins valid in general-purpose workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:create:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:update:record","clarify:upsert:record","general:delay:for","on:clarify:add-to-list","on:clarify:change-relationship","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:clarify:unset-relationship","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","webhook:send:outbound","code:execute","ai:generate","on:general:time:heartbeat"],"description":"The plugin that defines what this block does, restricted to plugins valid in general-purpose workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["_id","name","description","enabled","published_at","_created_at","_created_by","_updated_at","_updated_by","type","trigger","blocks"]}],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"],"description":"The resource."}},"required":["data"]},"ListOfWorkflowsResponse":{"type":"object","properties":{"links":{"type":"object","properties":{"next":{"type":"string","nullable":true,"description":"URL of the next page, or `null` on the last page."},"prev":{"type":"string","nullable":true,"description":"URL of the previous page, or `null` on the first page."}},"required":["next","prev"],"description":"Pagination links."},"meta":{"type":"object","properties":{"total_records":{"type":"number","description":"Total number of records across all pages."},"total_pages":{"type":"number","description":"Total number of pages at the current page size."}},"required":["total_records","total_pages"],"description":"Pagination metadata."},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["workflow"],"description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource."},"attributes":{"discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the workflow."},"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null if it has never been published."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"_created_at":{"type":"string","format":"date-time","description":"The time the workflow was created."},"_created_by":{"type":"string","description":"The ID of the user who created the workflow."},"_updated_at":{"type":"string","format":"date-time","description":"The time the workflow was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the workflow."},"type":{"type":"string","enum":["sequence"],"description":"The workflow type. `sequence` workflows are email sequences (campaigns)."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:email-validation","clarify:send:email","general:delay:for","on:clarify:add-to-list","on:manual:execution"],"description":"The plugin that defines what this block does, restricted to plugins valid in sequence workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:email-validation","clarify:send:email","general:delay:for","on:clarify:add-to-list","on:manual:execution"],"description":"The plugin that defines what this block does, restricted to plugins valid in sequence workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["_id","name","description","enabled","published_at","_created_at","_created_by","_updated_at","_updated_by","type","trigger","blocks"]},{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the workflow."},"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null if it has never been published."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"_created_at":{"type":"string","format":"date-time","description":"The time the workflow was created."},"_created_by":{"type":"string","description":"The ID of the user who created the workflow."},"_updated_at":{"type":"string","format":"date-time","description":"The time the workflow was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the workflow."},"type":{"type":"string","enum":["system"],"description":"The workflow type. `system` workflows back built-in features and are hidden."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["_id","name","description","enabled","published_at","_created_at","_created_by","_updated_at","_updated_by","type","trigger","blocks"]},{"type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the workflow."},"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null if it has never been published."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"_created_at":{"type":"string","format":"date-time","description":"The time the workflow was created."},"_created_by":{"type":"string","description":"The ID of the user who created the workflow."},"_updated_at":{"type":"string","format":"date-time","description":"The time the workflow was last updated."},"_updated_by":{"type":"string","description":"The ID of the user who last updated the workflow."},"type":{"type":"string","enum":["workflow"],"description":"The workflow type. `workflow` covers general-purpose automations."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:create:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:update:record","clarify:upsert:record","general:delay:for","on:clarify:add-to-list","on:clarify:change-relationship","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:clarify:unset-relationship","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","webhook:send:outbound","code:execute","ai:generate","on:general:time:heartbeat"],"description":"The plugin that defines what this block does, restricted to plugins valid in general-purpose workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["clarify:create:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:update:record","clarify:upsert:record","general:delay:for","on:clarify:add-to-list","on:clarify:change-relationship","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:clarify:unset-relationship","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","webhook:send:outbound","code:execute","ai:generate","on:general:time:heartbeat"],"description":"The plugin that defines what this block does, restricted to plugins valid in general-purpose workflows."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["_id","name","description","enabled","published_at","_created_at","_created_by","_updated_at","_updated_by","type","trigger","blocks"]}],"description":"Field values keyed by field name; available fields depend on the object’s schema."},"relationships":{"type":"object","properties":{},"description":"Related resources keyed by relationship name, present when requested via `include`."}},"required":["type","id","attributes"]},"description":"The page of resources."}},"required":["links","meta","data"]},"CreateWorkflowRequestDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"attributes":{"description":"Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"exits":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"Exit blocks keyed by block id, run when a record leaves the workflow."},"run_limits":{"default":{},"type":"object","properties":{"max_runs_per_record":{"type":"number","nullable":true,"description":"The maximum number of runs allowed per record. Null means unlimited."},"cooldown_period_days":{"type":"number","nullable":true,"description":"The number of days a record must wait before it can re-enter the workflow."}},"description":"Limits on how often a record can run through the workflow."},"type":{"type":"string","enum":["sequence","workflow"],"description":"The workflow type: `sequence` for an email sequence (campaign) or `workflow` for a general automation."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"required":["name","description","enabled","type","trigger","blocks"],"additionalProperties":true}},"required":["type","attributes"],"additionalProperties":false,"description":"The resource to create."}},"required":["data"]},"UpdateWorkflowRequestDto":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","description":"The resource type; matches the `object` path parameter."},"id":{"type":"string","description":"The unique ID of the resource to update."},"attributes":{"description":"The field values to change, keyed by field name; omitted fields keep their current values. System fields (prefixed with a single `_`) cannot be set.","type":"object","properties":{"name":{"type":"string","description":"The workflow’s display name."},"description":{"type":"string","description":"A human-readable description of the workflow."},"enabled":{"type":"boolean","description":"Whether the workflow is active and processing triggers."},"published_at":{"type":"string","format":"date-time","nullable":true,"description":"The time the workflow was published, or null to unpublish it."},"trigger":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"],"description":"The block that starts each run."},"blocks":{"type":"object","additionalProperties":{"type":"object","properties":{"_id":{"type":"string","description":"The block identifier, unique within the workflow. The trigger block is always `trigger`."},"plugin_id":{"type":"string","enum":["on:clarify:add-to-list","on:clarify:remove-from-list","on:clarify:set-relationship","on:clarify:unset-relationship","on:clarify:change-relationship","on:clarify:stream-event","on:clarify:automation-webhook","on:manual:execution","on:general:time:heartbeat","on:clarify:create:record","on:clarify:update:record","on:clarify:delete:record","on:clarify:upsert:record","on:email:bounce","on:email:click","on:email:open","on:email:reply","on:email:send","clarify:upsert:record","clarify:create:record","clarify:update:record","clarify:delete:record","clarify:find:records","clarify:set-relationship","clarify:unset-relationship","clarify:send:email","clarify:email-validation","webhook:send:outbound","code:execute","general:delay:for","ai:generate"],"description":"The plugin that defines what this block does (for example `clarify:create:record`)."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The path to the value the condition is tested against (for example `state.event.object.data.person.name`)."},"condition":{"type":"object","additionalProperties":{},"description":"The condition the field value must satisfy for the block to run."}},"required":["field","condition"]},"description":"Conditions that must all pass for the block to run."},"input":{"type":"object","additionalProperties":{},"description":"The block’s configuration, keyed by input name."},"prev":{"type":"string","nullable":true,"description":"The `_id` of the previous block, or null for the trigger."},"next":{"type":"string","nullable":true,"description":"The `_id` of the next block, or null for the last block."}},"required":["_id","plugin_id","filters","input","prev","next"]},"description":"The workflow’s blocks keyed by block id."}},"additionalProperties":true}},"required":["type","id","attributes"],"additionalProperties":false,"description":"The changes to apply."},"meta":{"readOnly":true,"description":"Optional JSON:API meta member carrying request-specific options; not accepted for this resource."}},"required":["data"]}},"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"API key authentication. Send your key in the Authorization header as: `api-key <your-api-key>`."}}},"security":[{"apiKey":[]}]}