{"openapi":"3.1.0","info":{"title":"Topo Public API","description":"Public REST API for Topo. All requests require a bearer API key issued from Settings → Developers. See the **Guides** in the left sidebar for authentication and rate-limit details.","version":"1.0.0"},"paths":{"/v1/me":{"get":{"tags":["me"],"summary":"Get Me","description":"Return identity, workspace, and scopes of the calling API key.","operationId":"get_me_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOutput"}}}}}}},"/v1/search":{"get":{"tags":["search"],"summary":"Search","description":"Find leads, accounts, sequence templates and tasks by name in one call.\n\nEach match carries a typed id `GET /v1/fetch` turns back into the full\nrecord, so a name is enough to reach any of them without knowing which\nendpoint owns it. Kinds the key may not read are dropped from the search\nrather than rejected, so a contacts-only key searching everything still\ngets its leads.","operationId":"search_v1_search_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Text to match against the name of workspace records.","title":"Query"},"description":"Text to match against the name of workspace records."},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["lead","account","sequence_template","task"],"type":"string"}},{"type":"null"}],"description":"Restrict the search to these kinds of record. Omit to search all of them.","title":"Types"},"description":"Restrict the search to these kinds of record. Omit to search all of them."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchOutput"}}}}}}},"/v1/fetch":{"get":{"tags":["search"],"summary":"Fetch","description":"Load the record behind one typed id returned by `GET /v1/search`.\n\nWhatever kind the id names, the response has the same shape: a readable\nrendering plus every field that kind's detail read returns, so a client can\nfollow a search result without branching per endpoint. The read scope of\nthe named kind is required.","operationId":"fetch_v1_fetch_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Typed id returned by `GET /v1/search`, in the form `<type>:<uuid>`.","title":"Id"},"description":"Typed id returned by `GET /v1/search`, in the form `<type>:<uuid>`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOutput"}}}}}}},"/v1/users":{"get":{"tags":["users"],"summary":"List Users","description":"List users in the authenticated organization.\n\nRequires the `users:read` scope on the API key.","operationId":"list_users_v1_users_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_PublicUserOutput_"}}}}}}},"/v1/contacts":{"get":{"tags":["contacts"],"summary":"List Contacts","description":"List contacts attached to the authenticated organization.\n\nRequires the `contacts:read` scope on the API key.","operationId":"list_contacts_v1_contacts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PublicContactSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by email (case-insensitive exact match).","title":"Email"},"description":"Filter by email (case-insensitive exact match)."},{"name":"linkedin_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by LinkedIn profile URL. Matched against all known canonical variants (trailing slash, www. prefix, etc.).","title":"Linkedin Url"},"description":"Filter by LinkedIn profile URL. Matched against all known canonical variants (trailing slash, www. prefix, etc.)."},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by contact ID.","title":"Contact Id"},"description":"Filter by contact ID."},{"name":"company_domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by the contact's linked account domain.","title":"Company Domain"},"description":"Filter by the contact's linked account domain."},{"name":"first_seen_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return contacts first seen strictly after this timestamp.","title":"First Seen After"},"description":"Return contacts first seen strictly after this timestamp."},{"name":"last_seen_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return contacts last seen strictly after this timestamp.","title":"Last Seen After"},"description":"Return contacts last seen strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_PublicContactOutput_"}}}}}},"post":{"tags":["contacts"],"summary":"Upsert Contact","description":"Create a contact, or update the matching one if it already exists.\n\nThe contact is matched inside your organization on `email` first, then\non `linkedin_url` (both normalized), so re-sending the same person is\nsafe and returns the same `id`. Fields you send overwrite the stored\nvalues; fields you omit are left untouched. `201` is returned for both\nthe create and the update.\n\n`company_domain` is what links the contact to an account — the account\n(and its company) is created when it does not exist yet, and\n`company_name` is only used for that creation. Sending `company_name`\nalone does not link an account.\n\nRequires the `contacts:write` scope on the API key.","operationId":"upsert_contact_v1_contacts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertContactPublicInput"}}},"description":"Upsert Contact payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactOutput"}}}}}}},"/v1/contacts/enrich":{"post":{"tags":["contacts"],"summary":"Enrich Contact","description":"Find a contact's missing details from what you already know about them.\n\nThis does not read or write your workspace: it asks an enrichment provider\nabout the person described in the body and returns what came back, so it\nspends enrichment credits. Use `POST /v1/contacts/get-and-enrich` to start\nfrom a contact you already store, and `POST /v1/contacts` to persist the\nresult.\n\nA provider that answers asynchronously returns `completed: false` with the\nprovider still working in `pending_provider`; retry to pick the answer up.\n\nRequires the `contacts:write` scope on the API key.","operationId":"enrich_contact_v1_contacts_enrich_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichContactPublicInput"}}},"required":true,"description":"Enrich Contact payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichContactPublicOutput"}}}}}}},"/v1/contacts/get-and-enrich":{"post":{"tags":["contacts"],"summary":"Get And Enrich Contact","description":"Load a contact and complete whatever it is missing with a provider.\n\nValues already stored in the workspace always win; enrichment only fills\nthe gaps and is not written back onto the contact. A provider is only\ncalled when the match is missing an email, a job title, or a company\ndomain — or when nothing matches but the email or LinkedIn URL given is\nenough to enrich from scratch — so this can spend enrichment credits. Use\n`GET /v1/contacts/{contact_id}` for a free, read-only load.\n\nRequires the `contacts:write` scope on the API key.","operationId":"get_and_enrich_contact_v1_contacts_get_and_enrich_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAndEnrichContactPublicInput"}}},"required":true,"description":"Get And Enrich Contact payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAndEnrichContactPublicOutput"}}}}}}},"/v1/contacts/qualify":{"post":{"tags":["contacts"],"summary":"Qualify Contact","description":"Check whether a contact matches your ideal customer profile.\n\nPass a `contact_id` to qualify a stored contact, or describe the person\ninline to qualify one you have not imported yet. The workspace's own ICP is\nused unless `icp_context` overrides it.\n\nRequires the `contacts:read` scope on the API key.","operationId":"qualify_contact_v1_contacts_qualify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualifyContactPublicInput"}}},"required":true,"description":"Qualify Contact payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualifyContactPublicOutput"}}}}}}},"/v1/contacts/unenroll":{"post":{"tags":["contacts"],"summary":"Unenroll Contacts","description":"Remove contacts from outreach entirely.\n\nEvery non-finished sequence of each contact is marked failed and manually\nstopped — including leads still waiting for approval — and the contact is\nexcluded from all outreach for three months. Scope it to one template with\n`sequence_template_id`.\n\nThis is not `POST /v1/sequences/{sequence_id}/stop`: that closes one\nenrollment with an outcome (won or lost) and leaves the contact reachable.\n\nRequires the `sequences:write` scope on the API key.","operationId":"unenroll_contacts_v1_contacts_unenroll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnenrollContactsPublicInput"}}},"required":true,"description":"Unenroll Contacts payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnenrollContactsPublicOutput"}}}}}}},"/v1/contacts/{contact_id}":{"get":{"tags":["contacts"],"summary":"Get Contact","description":"Fetch a single contact attached to the authenticated organization.\n\nRequires the `contacts:read` scope on the API key.","operationId":"get_contact_v1_contacts__contact_id__get","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Id"},"description":"ID of the contact."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactOutput"}}}}}}},"/v1/contacts/{contact_id}/owner":{"patch":{"tags":["contacts"],"summary":"Reassign Contact Owner","description":"Assign or clear the owner of a contact.\n\nRequires the `contacts:write` scope on the API key.","operationId":"reassign_contact_owner_v1_contacts__contact_id__owner_patch","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Id"},"description":"ID of the contact."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReassignContactOwnerPublicInput"}}},"description":"Reassign Contact Owner payload"},"responses":{"204":{"description":"Successful Response"}}}},"/v1/contacts/{contact_id}/variables":{"get":{"tags":["contacts"],"summary":"Get Contact Variables","description":"Fetch the custom variables stored on a contact and its account.\n\nRequires the `contacts:read` scope on the API key.","operationId":"get_contact_variables_v1_contacts__contact_id__variables_get","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Id"},"description":"ID of the contact."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactVariablesOutput"}}}}}},"patch":{"tags":["contacts"],"summary":"Update Contact Variables","description":"Merge variables into a contact's and/or its account's variables.\n\nUpsert semantics: provided keys are written, other keys are kept. If\nthe contact's company is not yet linked to your organization, the\naccount is created so the account variables can be stored.\n\nEach scope holds at most 200 variables. A null value clears the\nvariable but keeps the key counting toward the limit; use the DELETE\nendpoint to remove a key and free its slot.\n\nAccount variables can also be managed directly through\n`/v1/accounts/{account_id}/variables`.\n\nRequires the `contacts:write` scope on the API key.","operationId":"update_contact_variables_v1_contacts__contact_id__variables_patch","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Id"},"description":"ID of the contact."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateContactVariablesInput"}}},"description":"Update Contact Variables payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactVariablesOutput"}}}}}}},"/v1/contacts/{contact_id}/variables/{key}":{"delete":{"tags":["contacts"],"summary":"Delete Contact Variable","description":"Delete a single variable from a contact or its account.\n\nRequires the `contacts:write` scope on the API key.","operationId":"delete_contact_variable_v1_contacts__contact_id__variables__key__delete","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Id"},"description":"ID of the contact."},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"},"description":"ID of the key."},{"name":"scope","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PublicContactVariableScope","description":"Whether to delete a contact or account variable."},"description":"Whether to delete a contact or account variable."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactVariablesOutput"}}}}}}},"/v1/contacts/{contact_id}/crm":{"patch":{"tags":["contacts"],"summary":"Update Contact Crm Fields","description":"Write properties to the connected CRM record for a contact.\n\nRequires the `crm:write` scope on the API key.","operationId":"update_contact_crm_fields_v1_contacts__contact_id__crm_patch","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Id"},"description":"ID of the contact."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactCrmPublicInput"}}},"description":"Update Contact Crm Fields payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCrmFieldPublicOutput"}}}}}}},"/v1/contact-lists":{"get":{"tags":["contacts"],"summary":"List Contact Lists","description":"List the contact lists in the workspace.\n\nRequires the `contact_lists:read` scope on the API key.","operationId":"list_contact_lists_v1_contact_lists_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ContactListSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by list name (exact match).","title":"Name"},"description":"Filter by list name (exact match)."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return lists created strictly before this timestamp.","title":"Created At Before"},"description":"Return lists created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return lists created strictly after this timestamp.","title":"Created At After"},"description":"Return lists created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_ContactListOutput_"}}}}}},"post":{"tags":["contacts"],"summary":"Batch Create Contact Lists","description":"Create contact lists in batch (up to 100 items per request).\n\nUnlike single-resource `POST` endpoints, the body wraps the payloads in\n`items` and the response reports a per-item status.\n\nRequires the `contact_lists:write` scope on the API key.","operationId":"create_contact_lists_v1_contact_lists_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContactListsInput"}}},"description":"Batch Create Contact Lists payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse_ContactListOutput_"}}}}}}},"/v1/contact-lists/{contact_list_id}":{"get":{"tags":["contacts"],"summary":"Get Contact List","description":"Fetch a single contact list.\n\nRequires the `contact_lists:read` scope on the API key.","operationId":"get_contact_list_v1_contact_lists__contact_list_id__get","parameters":[{"name":"contact_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact List Id"},"description":"ID of the contact list."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactListOutput"}}}}}},"patch":{"tags":["contacts"],"summary":"Update Contact List","description":"Update mutable fields of a contact list.\n\nRequires the `contact_lists:write` scope on the API key.","operationId":"update_contact_list_v1_contact_lists__contact_list_id__patch","parameters":[{"name":"contact_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact List Id"},"description":"ID of the contact list."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactListInput"}}},"description":"Update Contact List payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactListOutput"}}}}}},"delete":{"tags":["contacts"],"summary":"Delete Contact List","description":"Delete a contact list and its entries.\n\nRequires the `contact_lists:write` scope on the API key.","operationId":"delete_contact_list_v1_contact_lists__contact_list_id__delete","parameters":[{"name":"contact_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact List Id"},"description":"ID of the contact list."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/contact-lists/{contact_list_id}/enroll":{"post":{"tags":["contacts"],"summary":"Enroll Contact List Members","description":"Enroll many contacts of a list into a sequence template in one call.\n\nUnlike `POST /v1/sequences`, which enrolls a single contact and fails on any\nconflict, this reports per-outcome counts and applies `conflict_strategy` to\ncontacts already enrolled or recently contacted, so a large enrollment does\nnot stop at the first one that cannot start.\n\nRequires the `sequences:write` scope on the API key.","operationId":"enroll_contact_list_members_v1_contact_lists__contact_list_id__enroll_post","parameters":[{"name":"contact_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact List Id"},"description":"ID of the contact list."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollContactListPublicInput"}}},"description":"Enroll Contact List Members payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollContactListPublicOutput"}}}}}}},"/v1/contact-entries":{"get":{"tags":["contacts"],"summary":"List Contact Entries","description":"List entries inside a contact list.\n\nRequires the `contact_lists:read` scope on the API key.","operationId":"list_contact_entries_v1_contact_entries_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ContactEntrySortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"contact_list_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"ID of the contact list to scope the result to.","title":"Contact List Id"},"description":"ID of the contact list to scope the result to."},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by email (exact match).","title":"Email"},"description":"Filter by email (exact match)."},{"name":"company_domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company domain (exact match).","title":"Company Domain"},"description":"Filter by company domain (exact match)."},{"name":"external_contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by external CRM contact identifier (exact match).","title":"External Contact Id"},"description":"Filter by external CRM contact identifier (exact match)."},{"name":"enriched","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by enrichment state.","title":"Enriched"},"description":"Filter by enrichment state."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return entries created strictly before this timestamp.","title":"Created At Before"},"description":"Return entries created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return entries created strictly after this timestamp.","title":"Created At After"},"description":"Return entries created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_ContactEntryOutput_"}}}}}},"post":{"tags":["contacts"],"summary":"Batch Create Contact Entries","description":"Add entries to existing contact lists in batch (up to 100 items per request).\n\nUnlike single-resource `POST` endpoints, the body wraps the payloads in\n`items` and the response reports a per-item status.\n\nRequires the `contact_lists:write` scope on the API key.","operationId":"create_contact_entries_v1_contact_entries_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContactEntriesInput"}}},"description":"Batch Create Contact Entries payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse_ContactEntryOutput_"}}}}}}},"/v1/contact-entries/{contact_entry_id}":{"get":{"tags":["contacts"],"summary":"Get Contact Entry","description":"Fetch a single contact-list entry.\n\nRequires the `contact_lists:read` scope on the API key.","operationId":"get_contact_entry_v1_contact_entries__contact_entry_id__get","parameters":[{"name":"contact_entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Entry Id"},"description":"ID of the contact entry."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactEntryOutput"}}}}}},"delete":{"tags":["contacts"],"summary":"Delete Contact Entry","description":"Remove a contact entry from its list.\n\nRequires the `contact_lists:write` scope on the API key.","operationId":"delete_contact_entry_v1_contact_entries__contact_entry_id__delete","parameters":[{"name":"contact_entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Contact Entry Id"},"description":"ID of the contact entry."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/contact-exclusions":{"get":{"tags":["contacts"],"summary":"List Contact Exclusions","description":"List the contact-level exclusions in the workspace.\n\nRequires the `contact_exclusions:read` scope on the API key.","operationId":"list_contact_exclusions_v1_contact_exclusions_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ContactExclusionSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by excluded email (exact match).","title":"Email"},"description":"Filter by excluded email (exact match)."},{"name":"linkedin_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by excluded LinkedIn URL (exact match).","title":"Linkedin Url"},"description":"Filter by excluded LinkedIn URL (exact match)."},{"name":"reason","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ExclusionReason"},{"type":"null"}],"description":"Filter by reason.","title":"Reason"},"description":"Filter by reason."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return exclusions created strictly before this timestamp.","title":"Created At Before"},"description":"Return exclusions created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return exclusions created strictly after this timestamp.","title":"Created At After"},"description":"Return exclusions created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_ContactExclusionOutput_"}}}}}},"post":{"tags":["contacts"],"summary":"Create Contact Exclusion","description":"Create a new contact-level exclusion.\n\nRequires the `contact_exclusions:write` scope on the API key.","operationId":"create_contact_exclusion_v1_contact_exclusions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactExclusionInput"}}},"description":"Create Contact Exclusion payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactExclusionOutput"}}}}}}},"/v1/contact-exclusions/{exclusion_id}":{"get":{"tags":["contacts"],"summary":"Get Contact Exclusion","description":"Fetch a single contact-level exclusion.\n\nRequires the `contact_exclusions:read` scope on the API key.","operationId":"get_contact_exclusion_v1_contact_exclusions__exclusion_id__get","parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Exclusion Id"},"description":"ID of the exclusion."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactExclusionOutput"}}}}}},"patch":{"tags":["contacts"],"summary":"Update Contact Exclusion","description":"Update mutable fields of a contact-level exclusion.\n\nRequires the `contact_exclusions:write` scope on the API key.","operationId":"update_contact_exclusion_v1_contact_exclusions__exclusion_id__patch","parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Exclusion Id"},"description":"ID of the exclusion."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactExclusionInput"}}},"description":"Update Contact Exclusion payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactExclusionOutput"}}}}}},"delete":{"tags":["contacts"],"summary":"Delete Contact Exclusion","description":"Permanently delete a contact-level exclusion.\n\nRequires the `contact_exclusions:write` scope on the API key.","operationId":"delete_contact_exclusion_v1_contact_exclusions__exclusion_id__delete","parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Exclusion Id"},"description":"ID of the exclusion."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/accounts":{"get":{"tags":["accounts"],"summary":"List Accounts","description":"List accounts attached to the authenticated organization.\n\nRequires the `accounts:read` scope on the API key.","operationId":"list_accounts_v1_accounts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by primary company domain (case-insensitive exact match).","title":"Domain"},"description":"Filter by primary company domain (case-insensitive exact match)."},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company name (case-insensitive substring match).","title":"Name"},"description":"Filter by company name (case-insensitive substring match)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_PublicAccountOutput_"}}}}}},"post":{"tags":["accounts"],"summary":"Upsert Account","description":"Create an account, or return the matching one if it already exists.\n\nThe account is matched inside your organization on `domain`\n(normalized), so re-sending the same company is safe and returns the\nsame `id`. `name` is only used when the account (and its company) does\nnot exist yet. `201` is returned for both the create and the match.\n\nUpserting a contact with `company_domain` (`POST /v1/contacts`) creates\nthe account implicitly — use this endpoint when you want to push\ncompanies before knowing which people to pursue.\n\nRequires the `accounts:write` scope on the API key.","operationId":"upsert_account_v1_accounts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAccountPublicInput"}}},"description":"Upsert Account payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccountOutput"}}}}}}},"/v1/accounts/enrich":{"post":{"tags":["accounts"],"summary":"Enrich Account","description":"Look up what a company does from its website domain.\n\nStored company data is returned when the workspace already knows the\ndomain; otherwise the company's website is summarized on the fly. Nothing\nis written to the workspace, so this never creates an account — use\n`POST /v1/accounts` for that.\n\nRequires the `accounts:read` scope on the API key.","operationId":"enrich_account_v1_accounts_enrich_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountPublicInput"}}},"required":true,"description":"Enrich Account payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountPublicOutput"}}}}}}},"/v1/accounts/{account_id}":{"get":{"tags":["accounts"],"summary":"Get Account","description":"Fetch a single account attached to the authenticated organization.\n\nRequires the `accounts:read` scope on the API key.","operationId":"get_account_v1_accounts__account_id__get","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"},"description":"ID of the account."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccountOutput"}}}}}}},"/v1/accounts/{account_id}/owner":{"patch":{"tags":["accounts"],"summary":"Reassign Account Owner","description":"Assign or clear the owner of an account.\n\nRequires the `accounts:write` scope on the API key.","operationId":"reassign_account_owner_v1_accounts__account_id__owner_patch","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"},"description":"ID of the account."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReassignAccountOwnerPublicInput"}}},"description":"Reassign Account Owner payload"},"responses":{"204":{"description":"Successful Response"}}}},"/v1/accounts/{account_id}/variables":{"get":{"tags":["accounts"],"summary":"Get Account Variables","description":"Fetch the custom variables stored on an account.\n\nRequires the `accounts:read` scope on the API key.","operationId":"get_account_variables_v1_accounts__account_id__variables_get","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"},"description":"ID of the account."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccountVariablesOutput"}}}}}},"patch":{"tags":["accounts"],"summary":"Update Account Variables","description":"Merge variables into an account's variables.\n\nUpsert semantics: provided keys are written, other keys are kept.\n\nAn account holds at most 200 variables. A null value clears the\nvariable but keeps the key counting toward the limit; use the DELETE\nendpoint to remove a key and free its slot.\n\nRequires the `accounts:write` scope on the API key.","operationId":"update_account_variables_v1_accounts__account_id__variables_patch","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"},"description":"ID of the account."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateAccountVariablesInput"}}},"description":"Update Account Variables payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccountVariablesOutput"}}}}}}},"/v1/accounts/{account_id}/variables/{key}":{"delete":{"tags":["accounts"],"summary":"Delete Account Variable","description":"Delete a single variable from an account.\n\nRequires the `accounts:write` scope on the API key.","operationId":"delete_account_variable_v1_accounts__account_id__variables__key__delete","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"},"description":"ID of the account."},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"},"description":"ID of the key."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccountVariablesOutput"}}}}}}},"/v1/accounts/{account_id}/crm":{"patch":{"tags":["accounts"],"summary":"Update Account Crm Fields","description":"Write properties to the connected CRM record for an account.\n\nRequires the `crm:write` scope on the API key.","operationId":"update_account_crm_fields_v1_accounts__account_id__crm_patch","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"},"description":"ID of the account."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountCrmPublicInput"}}},"description":"Update Account Crm Fields payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCrmFieldPublicOutput"}}}}}}},"/v1/account-lists":{"get":{"tags":["accounts"],"summary":"List Account Lists","description":"List the account lists in the workspace.\n\nRequires the `account_lists:read` scope on the API key.","operationId":"list_account_lists_v1_account_lists_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/AccountListSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by list name (exact match).","title":"Name"},"description":"Filter by list name (exact match)."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return lists created strictly before this timestamp.","title":"Created At Before"},"description":"Return lists created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return lists created strictly after this timestamp.","title":"Created At After"},"description":"Return lists created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_AccountListOutput_"}}}}}},"post":{"tags":["accounts"],"summary":"Batch Create Account Lists","description":"Create account lists in batch (up to 100 items per request).\n\nUnlike single-resource `POST` endpoints, the body wraps the payloads in\n`items` and the response reports a per-item status.\n\nRequires the `account_lists:write` scope on the API key.","operationId":"create_account_lists_v1_account_lists_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountListsInput"}}},"description":"Batch Create Account Lists payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse_AccountListOutput_"}}}}}}},"/v1/account-lists/{account_list_id}":{"get":{"tags":["accounts"],"summary":"Get Account List","description":"Fetch a single account list.\n\nRequires the `account_lists:read` scope on the API key.","operationId":"get_account_list_v1_account_lists__account_list_id__get","parameters":[{"name":"account_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account List Id"},"description":"ID of the account list."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountListOutput"}}}}}},"patch":{"tags":["accounts"],"summary":"Update Account List","description":"Update mutable fields of an account list.\n\nRequires the `account_lists:write` scope on the API key.","operationId":"update_account_list_v1_account_lists__account_list_id__patch","parameters":[{"name":"account_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account List Id"},"description":"ID of the account list."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountListInput"}}},"description":"Update Account List payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountListOutput"}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Account List","description":"Delete an account list and its entries.\n\nRequires the `account_lists:write` scope on the API key.","operationId":"delete_account_list_v1_account_lists__account_list_id__delete","parameters":[{"name":"account_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account List Id"},"description":"ID of the account list."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/account-entries":{"get":{"tags":["accounts"],"summary":"List Account Entries","description":"List entries inside an account list.\n\nRequires the `account_lists:read` scope on the API key.","operationId":"list_account_entries_v1_account_entries_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/AccountEntrySortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"account_list_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"ID of the account list to scope the result to.","title":"Account List Id"},"description":"ID of the account list to scope the result to."},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company name (exact match).","title":"Name"},"description":"Filter by company name (exact match)."},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company domain (exact match).","title":"Domain"},"description":"Filter by company domain (exact match)."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return entries created strictly before this timestamp.","title":"Created At Before"},"description":"Return entries created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return entries created strictly after this timestamp.","title":"Created At After"},"description":"Return entries created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_AccountEntryOutput_"}}}}}},"post":{"tags":["accounts"],"summary":"Batch Create Account Entries","description":"Add entries to existing account lists in batch (up to 100 items per request).\n\nUnlike single-resource `POST` endpoints, the body wraps the payloads in\n`items` and the response reports a per-item status.\n\nRequires the `account_lists:write` scope on the API key.","operationId":"create_account_entries_v1_account_entries_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountEntriesInput"}}},"description":"Batch Create Account Entries payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse_AccountEntryOutput_"}}}}}}},"/v1/account-entries/{account_entry_id}":{"get":{"tags":["accounts"],"summary":"Get Account Entry","description":"Fetch a single account-list entry.\n\nRequires the `account_lists:read` scope on the API key.","operationId":"get_account_entry_v1_account_entries__account_entry_id__get","parameters":[{"name":"account_entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Entry Id"},"description":"ID of the account entry."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountEntryOutput"}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Account Entry","description":"Remove an account entry from its list.\n\nRequires the `account_lists:write` scope on the API key.","operationId":"delete_account_entry_v1_account_entries__account_entry_id__delete","parameters":[{"name":"account_entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Entry Id"},"description":"ID of the account entry."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/account-exclusions":{"get":{"tags":["accounts"],"summary":"List Account Exclusions","description":"List the account-level exclusions in the workspace.\n\nRequires the `account_exclusions:read` scope on the API key.","operationId":"list_account_exclusions_v1_account_exclusions_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/AccountExclusionSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by excluded domain (exact match).","title":"Domain"},"description":"Filter by excluded domain (exact match)."},{"name":"reason","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ExclusionReason"},{"type":"null"}],"description":"Filter by reason.","title":"Reason"},"description":"Filter by reason."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return exclusions created strictly before this timestamp.","title":"Created At Before"},"description":"Return exclusions created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return exclusions created strictly after this timestamp.","title":"Created At After"},"description":"Return exclusions created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_AccountExclusionOutput_"}}}}}},"post":{"tags":["accounts"],"summary":"Create Account Exclusion","description":"Create a new account-level exclusion.\n\nRequires the `account_exclusions:write` scope on the API key.","operationId":"create_account_exclusion_v1_account_exclusions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountExclusionInput"}}},"description":"Create Account Exclusion payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountExclusionOutput"}}}}}}},"/v1/account-exclusions/{exclusion_id}":{"get":{"tags":["accounts"],"summary":"Get Account Exclusion","description":"Fetch a single account-level exclusion.\n\nRequires the `account_exclusions:read` scope on the API key.","operationId":"get_account_exclusion_v1_account_exclusions__exclusion_id__get","parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Exclusion Id"},"description":"ID of the exclusion."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountExclusionOutput"}}}}}},"patch":{"tags":["accounts"],"summary":"Update Account Exclusion","description":"Update mutable fields of an account-level exclusion.\n\nRequires the `account_exclusions:write` scope on the API key.","operationId":"update_account_exclusion_v1_account_exclusions__exclusion_id__patch","parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Exclusion Id"},"description":"ID of the exclusion."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountExclusionInput"}}},"description":"Update Account Exclusion payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountExclusionOutput"}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Account Exclusion","description":"Permanently delete an account-level exclusion.\n\nRequires the `account_exclusions:write` scope on the API key.","operationId":"delete_account_exclusion_v1_account_exclusions__exclusion_id__delete","parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Exclusion Id"},"description":"ID of the exclusion."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/sequences":{"get":{"tags":["sequences"],"summary":"List Sequences","description":"List sequence runs in the workspace.\n\nRequires the `sequences:read` scope on the API key.","operationId":"list_sequences_v1_sequences_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SequenceSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"sequence_template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by template.","title":"Sequence Template Id"},"description":"Filter by template."},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by the contact the sequence targets.","title":"Contact Id"},"description":"Filter by the contact the sequence targets."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/StatusSequence"},{"type":"null"}],"description":"Filter by status.","title":"Status"},"description":"Filter by status."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return sequences created strictly before this timestamp.","title":"Created At Before"},"description":"Return sequences created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return sequences created strictly after this timestamp.","title":"Created At After"},"description":"Return sequences created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_SequencePublicOutput_"}}}}}},"post":{"tags":["sequences"],"summary":"Enroll Contact","description":"Enroll a contact into a sequence template, starting a sequence run.\n\nThe template must be `ACTIVE` and have at least one step; the sequence is\ninstantiated from the template's steps and scheduled exactly like an\nenrollment made from the app, including task-owner assignment.\n\nA contact already running this template is rejected rather than enrolled\ntwice, and so is a contact (or its company) on an exclusion list.\n\nA contact with an active sequence from a *different* template is also\nrejected: stop that sequence first (`POST /v1/sequences/{id}/stop`) to avoid\ntwo sequences messaging the same person at once. Templates the contact only\nhas completed or stopped sequences for do not block enrollment.\n\nRequires the `sequences:write` scope on the API key.","operationId":"enroll_contact_v1_sequences_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollContactPublicInput"}}},"description":"Enroll Contact payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequencePublicOutput"}}}}}}},"/v1/sequences/{sequence_id}":{"get":{"tags":["sequences"],"summary":"Get Sequence","description":"Fetch a single sequence run.\n\nRequires the `sequences:read` scope on the API key.","operationId":"get_sequence_v1_sequences__sequence_id__get","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Id"},"description":"ID of the sequence."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequencePublicOutput"}}}}}},"patch":{"tags":["sequences"],"summary":"Update Sequence","description":"Partially update a sequence run (currently supports runtime variables).\n\nRequires the `sequences:write` scope on the API key.","operationId":"update_sequence_v1_sequences__sequence_id__patch","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Id"},"description":"ID of the sequence."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSequencePublicInput"}}},"description":"Update Sequence payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequencePublicOutput"}}}}}}},"/v1/sequences/{sequence_id}/pause":{"post":{"tags":["sequences"],"summary":"Pause Sequence","description":"Pause a running sequence until `paused_until`.\n\nRequires the `sequences:write` scope on the API key.","operationId":"pause_sequence_v1_sequences__sequence_id__pause_post","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Id"},"description":"ID of the sequence."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PauseSequenceInput"}}},"description":"Pause Sequence payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequencePublicOutput"}}}}}}},"/v1/sequences/{sequence_id}/resume":{"post":{"tags":["sequences"],"summary":"Resume Sequence","description":"Resume a paused sequence.\n\nRequires the `sequences:write` scope on the API key.","operationId":"resume_sequence_v1_sequences__sequence_id__resume_post","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Id"},"description":"ID of the sequence."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequencePublicOutput"}}}}}}},"/v1/sequences/{sequence_id}/stop":{"post":{"tags":["sequences"],"summary":"Stop Sequence","description":"Permanently stop a sequence.\n\nRequires the `sequences:write` scope on the API key.","operationId":"stop_sequence_v1_sequences__sequence_id__stop_post","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Id"},"description":"ID of the sequence."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StopSequencePublicInput"}}},"description":"Stop Sequence payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequencePublicOutput"}}}}}}},"/v1/sequence-templates":{"get":{"tags":["sequence-templates"],"summary":"List Sequence Templates","description":"List the sequence templates available in the workspace.\n\nRequires the `sequences:read` scope on the API key.","operationId":"list_sequence_templates_v1_sequence_templates_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SequenceTemplateSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by template name (exact match).","title":"Name"},"description":"Filter by template name (exact match)."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SequenceTemplateStatus"},{"type":"null"}],"description":"Filter by lifecycle state.","title":"Status"},"description":"Filter by lifecycle state."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return templates created strictly before this timestamp.","title":"Created At Before"},"description":"Return templates created strictly before this timestamp."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return templates created strictly after this timestamp.","title":"Created At After"},"description":"Return templates created strictly after this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_SequenceTemplatePublicOutput_"}}}}}}},"/v1/sequence-templates/metrics":{"get":{"tags":["sequence-templates"],"summary":"Get Sequence Metrics","description":"Report outreach performance over a date window.\n\nCounters cover the window, not the lifetime of a template, and are counts\nrather than rates: leads found, sent, opened, clicked, replied, positive\nreplies and hot leads, plus how the replies were categorised. Templates are\nreturned busiest first. Omit `sequence_template_id` to cover the whole\nportfolio.\n\nRequires the `sequences:read` scope on the API key.","operationId":"get_sequence_metrics_v1_sequence_templates_metrics_get","parameters":[{"name":"sequence_template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Report on one template. Omit to cover every template in the workspace.","title":"Sequence Template Id"},"description":"Report on one template. Omit to cover every template in the workspace."},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Lookback window in days, used when start_date and end_date are omitted.","default":30,"title":"Days"},"description":"Lookback window in days, used when start_date and end_date are omitted."},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Inclusive start of the reporting window.","title":"Start Date"},"description":"Inclusive start of the reporting window."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Inclusive end of the window. Defaults to today.","title":"End Date"},"description":"Inclusive end of the window. Defaults to today."},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SequenceMetricChannel"},{"type":"null"}],"description":"Restrict counters to one channel. Defaults to all channels.","title":"Channel"},"description":"Restrict counters to one channel. Defaults to all channels."},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Include templates that are no longer active.","default":false,"title":"Include Inactive"},"description":"Include templates that are no longer active."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceMetricsPublicOutput"}}}}}}},"/v1/sequence-templates/{sequence_template_id}":{"get":{"tags":["sequence-templates"],"summary":"Get Sequence Template","description":"Fetch a single sequence template.\n\nRequires the `sequences:read` scope on the API key.","operationId":"get_sequence_template_v1_sequence_templates__sequence_template_id__get","parameters":[{"name":"sequence_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Template Id"},"description":"ID of the sequence template."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceTemplatePublicOutput"}}}}}}},"/v1/sequence-templates/{sequence_template_id}/leads/approve":{"post":{"tags":["sequence-templates"],"summary":"Approve Leads","description":"Approve leads waiting for review for a sequence template.\n\nRequires the `sequences:write` scope on the API key.","operationId":"approve_leads_v1_sequence_templates__sequence_template_id__leads_approve_post","parameters":[{"name":"sequence_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Template Id"},"description":"ID of the sequence template."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LeadTransitionPublicInput"},{"type":"null"}],"title":"Input Data"}}},"description":"Approve Leads payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadTransitionPublicOutput"}}}}}}},"/v1/sequence-templates/{sequence_template_id}/leads/refuse":{"post":{"tags":["sequence-templates"],"summary":"Refuse Leads","description":"Refuse leads waiting for review for a sequence template.\n\nRequires the `sequences:write` scope on the API key.","operationId":"refuse_leads_v1_sequence_templates__sequence_template_id__leads_refuse_post","parameters":[{"name":"sequence_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Template Id"},"description":"ID of the sequence template."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LeadTransitionPublicInput"},{"type":"null"}],"title":"Input Data"}}},"description":"Refuse Leads payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadTransitionPublicOutput"}}}}}}},"/v1/sequence-templates/{sequence_template_id}/pause":{"post":{"tags":["sequence-templates"],"summary":"Pause Sequence Template","description":"Pause an active sequence template (sets status to INACTIVE).\n\nRequires the `sequences:write` scope on the API key.","operationId":"pause_sequence_template_v1_sequence_templates__sequence_template_id__pause_post","parameters":[{"name":"sequence_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Template Id"},"description":"ID of the sequence template."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceTemplatePublicOutput"}}}}}}},"/v1/sequence-templates/{sequence_template_id}/resume":{"post":{"tags":["sequence-templates"],"summary":"Resume Sequence Template","description":"Resume a paused sequence template (validates readiness and sets status to ACTIVE).\n\nRequires the `sequences:write` scope on the API key.","operationId":"resume_sequence_template_v1_sequence_templates__sequence_template_id__resume_post","parameters":[{"name":"sequence_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sequence Template Id"},"description":"ID of the sequence template."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceTemplatePublicOutput"}}}}}}},"/v1/playbooks":{"get":{"tags":["playbooks"],"summary":"List Playbooks","description":"List automations (playbooks) in the workspace.\n\nRequires the `sequences:read` scope on the API key.","operationId":"list_playbooks_v1_playbooks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlaybookStatus"},{"type":"null"}],"description":"Filter playbooks by lifecycle status.","title":"Status"},"description":"Filter playbooks by lifecycle status."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search playbooks by name substring.","title":"Search"},"description":"Search playbooks by name substring."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_PlaybookPublicOutput_"}}}}}}},"/v1/playbooks/{playbook_id}":{"get":{"tags":["playbooks"],"summary":"Get Playbook","description":"Fetch a single playbook configuration and run stats.\n\nRequires the `sequences:read` scope on the API key.","operationId":"get_playbook_v1_playbooks__playbook_id__get","parameters":[{"name":"playbook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Playbook Id"},"description":"ID of the playbook."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaybookPublicOutput"}}}}}}},"/v1/playbooks/{playbook_id}/runs":{"get":{"tags":["playbooks"],"summary":"List Playbook Runs","description":"List execution runs for a playbook.\n\nRequires the `sequences:read` scope on the API key.","operationId":"list_playbook_runs_v1_playbooks__playbook_id__runs_get","parameters":[{"name":"playbook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Playbook Id"},"description":"ID of the playbook."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlaybookRunStatus"},{"type":"null"}],"description":"Filter runs by execution status.","title":"Status"},"description":"Filter runs by execution status."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_PlaybookRunPublicOutput_"}}}}}}},"/v1/playbooks/{playbook_id}/run":{"post":{"tags":["playbooks"],"summary":"Run Playbook","description":"Manually trigger a run for a manual-trigger playbook.\n\nRequires the `sequences:write` scope on the API key.","operationId":"run_playbook_v1_playbooks__playbook_id__run_post","parameters":[{"name":"playbook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Playbook Id"},"description":"ID of the playbook."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlaybookPublicInput"}}},"description":"Run Playbook payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlaybookPublicOutput"}}}}}}},"/v1/playbooks/{playbook_id}/pause":{"post":{"tags":["playbooks"],"summary":"Pause Playbook","description":"Pause an active playbook, suspending automated runs.\n\nRequires the `sequences:write` scope on the API key.","operationId":"pause_playbook_v1_playbooks__playbook_id__pause_post","parameters":[{"name":"playbook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Playbook Id"},"description":"ID of the playbook."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPlaybookStatusPublicOutput"}}}}}}},"/v1/playbooks/{playbook_id}/resume":{"post":{"tags":["playbooks"],"summary":"Resume Playbook","description":"Resume a paused playbook, re-enabling automation after validation.\n\nRequires the `sequences:write` scope on the API key.","operationId":"resume_playbook_v1_playbooks__playbook_id__resume_post","parameters":[{"name":"playbook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Playbook Id"},"description":"ID of the playbook."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPlaybookStatusPublicOutput"}}}}}}},"/v1/tasks":{"get":{"tags":["tasks"],"summary":"List Tasks","description":"List tasks in the workspace.\n\nRequires the `tasks:read` scope on the API key.","operationId":"list_tasks_v1_tasks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TaskSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"asc"},"description":"Sort direction."},{"name":"sequence_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by an individual sequence run.","title":"Sequence Id"},"description":"Filter by an individual sequence run."},{"name":"sequence_template_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"Filter by sequence template. Repeat the parameter to pass multiple values.","title":"Sequence Template Ids"},"description":"Filter by sequence template. Repeat the parameter to pass multiple values."},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TaskType"}},{"type":"null"}],"description":"Filter by task type. Repeat the parameter to pass multiple values.","title":"Types"},"description":"Filter by task type. Repeat the parameter to pass multiple values."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TaskStatus"},{"type":"null"}],"description":"Filter by status.","title":"Status"},"description":"Filter by status."},{"name":"priorities","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/TaskPriority"}},{"type":"null"}],"description":"Filter by priority bucket. Repeat the parameter to pass multiple values.","title":"Priorities"},"description":"Filter by priority bucket. Repeat the parameter to pass multiple values."},{"name":"assignee_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by assignee.","title":"Assignee User Id"},"description":"Filter by assignee."},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by contact linked to the task or its sequence.","title":"Contact Id"},"description":"Filter by contact linked to the task or its sequence."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return tasks created strictly after this timestamp.","title":"Created At After"},"description":"Return tasks created strictly after this timestamp."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return tasks created strictly before this timestamp.","title":"Created At Before"},"description":"Return tasks created strictly before this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_TaskPublicOutput_"}}}}}},"post":{"tags":["tasks"],"summary":"Create Todo Task","description":"Create a standalone to-do task.\n\nRequires the `tasks:write` scope on the API key.","operationId":"create_todo_task_v1_tasks_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTodoTaskPublicInput"}}},"description":"Create Todo Task payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/tasks/{task_id}":{"get":{"tags":["tasks"],"summary":"Get Task","description":"Fetch a single task.\n\nRequires the `tasks:read` scope on the API key.","operationId":"get_task_v1_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}},"patch":{"tags":["tasks"],"summary":"Update Todo Task","description":"Update a standalone to-do task.\n\nRequires the `tasks:write` scope on the API key.","operationId":"update_todo_task_v1_tasks__task_id__patch","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTodoTaskPublicInput"}}},"description":"Update Todo Task payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/tasks/{task_id}/messages":{"get":{"tags":["tasks"],"summary":"List Task Messages","description":"List messages exchanged on a task's sequence thread.\n\nRequires the `tasks:read` scope on the API key.","operationId":"list_task_messages_v1_tasks__task_id__messages_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessagePublicOutput"},"title":"Response List Task Messages V1 Tasks  Task Id  Messages Get"}}}}}}},"/v1/tasks/{task_id}/execute":{"post":{"tags":["tasks"],"summary":"Execute Task","description":"Execute an actionable task (send a reply, approve a lead, log a call, etc.).\n\nRequires the `tasks:write` scope on the API key.","operationId":"execute_task_v1_tasks__task_id__execute_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskExecutePublicInput"}}},"description":"Execute Task payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/tasks/{task_id}/skip":{"post":{"tags":["tasks"],"summary":"Skip Task","description":"Skip an actionable task.\n\nRequires the `tasks:write` scope on the API key.","operationId":"skip_task_v1_tasks__task_id__skip_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/tasks/{task_id}/reopen":{"post":{"tags":["tasks"],"summary":"Reopen Task","description":"Reopen a completed or skipped task.\n\nRequires the `tasks:write` scope on the API key.","operationId":"reopen_task_v1_tasks__task_id__reopen_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/tasks/{task_id}/snooze":{"post":{"tags":["tasks"],"summary":"Snooze Task","description":"Snooze an actionable task until a future datetime.\n\nRequires the `tasks:write` scope on the API key.","operationId":"snooze_task_v1_tasks__task_id__snooze_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskSnoozePublicInput"}}},"description":"Snooze Task payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskSnoozePublicOutput"}}}}}}},"/v1/tasks/{task_id}/assignee":{"patch":{"tags":["tasks"],"summary":"Reassign Task","description":"Reassign a task (or every actionable task in its sequence) to another user.\n\nRequires the `tasks:write` scope on the API key.","operationId":"reassign_task_v1_tasks__task_id__assignee_patch","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReassignTaskPublicInput"}}},"description":"Reassign Task payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/tasks/{task_id}/complete":{"post":{"tags":["tasks"],"summary":"Complete Task","description":"Mark an actionable task as completed.\n\nRequires the `tasks:write` scope on the API key.","operationId":"complete_task_v1_tasks__task_id__complete_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"},"description":"ID of the task."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CompleteTaskPublicInput"},{"type":"null"}],"title":"Input Data"}}},"description":"Complete Task payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPublicOutput"}}}}}}},"/v1/messages":{"get":{"tags":["messages"],"summary":"List Messages","description":"List messages exchanged in the workspace.\n\nRequires the `messages:read` scope on the API key.","operationId":"list_messages_v1_messages_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"desc"},"description":"Sort direction."},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by contact linked to the message sequence.","title":"Contact Id"},"description":"Filter by contact linked to the message sequence."},{"name":"sequence_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by sequence run.","title":"Sequence Id"},"description":"Filter by sequence run."},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}],"description":"Filter by channel.","title":"Channel"},"description":"Filter by channel."},{"name":"direction","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageDirection"},{"type":"null"}],"description":"Filter by message direction.","title":"Direction"},"description":"Filter by message direction."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return messages sent strictly after this timestamp.","title":"Created At After"},"description":"Return messages sent strictly after this timestamp."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return messages sent strictly before this timestamp.","title":"Created At Before"},"description":"Return messages sent strictly before this timestamp."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_MessagePublicOutput_"}}}}}}},"/v1/messages/{message_id}":{"get":{"tags":["messages"],"summary":"Get Message","description":"Fetch a single message.\n\nRequires the `messages:read` scope on the API key.","operationId":"get_message_v1_messages__message_id__get","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"},"description":"ID of the message."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagePublicOutput"}}}}}}},"/v1/messages/{message_id}/reply":{"post":{"tags":["messages"],"summary":"Reply To Message","description":"Reply to a lead in the thread they wrote in, over email or LinkedIn.\n\nRequires the `sequences:write` scope on the API key.","operationId":"reply_to_message_v1_messages__message_id__reply_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"},"description":"ID of the message."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyMessagePublicInput"}}},"description":"Reply To Message payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyMessagePublicOutput"}}}}}}},"/v1/messages/{message_id}/category":{"patch":{"tags":["messages"],"summary":"Categorize Reply","description":"Recategorize an inbound reply message.\n\nRequires the `sequences:write` scope on the API key.","operationId":"categorize_reply_v1_messages__message_id__category_patch","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"},"description":"ID of the message."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMessageCategoryPublicInput"}}},"description":"Categorize Reply payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCategoryPublicOutput"}}}}}}},"/v1/threads":{"get":{"tags":["threads"],"summary":"List Threads","description":"List conversation threads newest first.\n\nRequires the `messages:read` scope on the API key.","operationId":"list_threads_v1_threads_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Size"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Free text search matched against subject, participant emails, and names.","title":"Query"},"description":"Free text search matched against subject, participant emails, and names."},{"name":"lead_status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/StatusSequence"},{"type":"null"}],"description":"Filter by sequence status of the enrolled lead (e.g. WAITING_FOR_USER, WAITING_FOR_LEAD).","title":"Lead Status"},"description":"Filter by sequence status of the enrolled lead (e.g. WAITING_FOR_USER, WAITING_FOR_LEAD)."},{"name":"last_message_direction","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageDirection"},{"type":"null"}],"description":"Filter by direction of the latest message (INBOUND or OUTBOUND).","title":"Last Message Direction"},"description":"Filter by direction of the latest message (INBOUND or OUTBOUND)."},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by contact linked to the thread.","title":"Contact Id"},"description":"Filter by contact linked to the thread."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_ThreadSummaryPublicOutput_"}}}}}}},"/v1/threads/{thread_id}":{"get":{"tags":["threads"],"summary":"Get Thread","description":"Fetch a single conversation thread with its messages.\n\nRequires the `messages:read` scope on the API key.","operationId":"get_thread_v1_threads__thread_id__get","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"},"description":"ID of the thread."},{"name":"message_limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"How many of the most recent messages to return.","default":20,"title":"Message Limit"},"description":"How many of the most recent messages to return."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadDetailPublicOutput"}}}}}}},"/v1/threads/{thread_id}/archive":{"post":{"tags":["threads"],"summary":"Archive Thread","description":"Archive an inbox conversation thread.\n\nRequires the `contacts:write` scope on the API key.","operationId":"archive_thread_v1_threads__thread_id__archive_post","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"},"description":"ID of the thread."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadArchivePublicOutput"}}}}}}},"/v1/threads/{thread_id}/unarchive":{"post":{"tags":["threads"],"summary":"Unarchive Thread","description":"Unarchive an inbox conversation thread.\n\nRequires the `contacts:write` scope on the API key.","operationId":"unarchive_thread_v1_threads__thread_id__unarchive_post","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"},"description":"ID of the thread."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadArchivePublicOutput"}}}}}}},"/v1/activities":{"get":{"tags":["activities"],"summary":"List Activities","description":"List activities recorded in the workspace.\n\nRequires the `activities:read` scope on the API key.","operationId":"list_activities_v1_activities_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActivitySortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"desc"},"description":"Sort direction."},{"name":"contact_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by contact.","title":"Contact Id"},"description":"Filter by contact."},{"name":"sequence_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by sequence run.","title":"Sequence Id"},"description":"Filter by sequence run."},{"name":"sequence_template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by sequence template.","title":"Sequence Template Id"},"description":"Filter by sequence template."},{"name":"resource_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}],"description":"Filter by resource type.","title":"Resource Type"},"description":"Filter by resource type."},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}],"description":"Filter by channel.","title":"Channel"},"description":"Filter by channel."},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActivityEventType"},{"type":"null"}],"description":"Filter by event type.","title":"Event Type"},"description":"Filter by event type."},{"name":"created_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return activities strictly after this timestamp (exclusive).","title":"Created At After"},"description":"Return activities strictly after this timestamp (exclusive)."},{"name":"created_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return activities strictly before this timestamp (exclusive).","title":"Created At Before"},"description":"Return activities strictly before this timestamp (exclusive)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_ActivityPublicOutput_"}}}}}}},"/v1/activities/{activity_id}":{"get":{"tags":["activities"],"summary":"Get Activity","description":"Fetch a single activity.\n\nRequires the `activities:read` scope on the API key.","operationId":"get_activity_v1_activities__activity_id__get","parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"},"description":"ID of the activity."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPublicOutput"}}}}}}},"/v1/webhooks":{"get":{"tags":["webhooks"],"summary":"List Webhook Subscriptions","description":"List the webhook subscriptions configured in the workspace.\n\nRequires the `webhooks:read` scope on the API key.","operationId":"list_webhook_subscriptions_v1_webhooks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_WebhookSubscriptionOutput_"}}}}}},"post":{"tags":["webhooks"],"summary":"Create Webhook Subscription","description":"Create a webhook subscription.\n\nRequires the `webhooks:write` scope on the API key.","operationId":"create_webhook_subscription_v1_webhooks_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionInput"}}},"description":"Create Webhook Subscription payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedWebhookSubscriptionOutput"}}}}}}},"/v1/webhooks/{webhook_id}":{"get":{"tags":["webhooks"],"summary":"Get Webhook Subscription","description":"Fetch a single webhook subscription.\n\nRequires the `webhooks:read` scope on the API key.","operationId":"get_webhook_subscription_v1_webhooks__webhook_id__get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"},"description":"ID of the webhook."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionOutput"}}}}}},"patch":{"tags":["webhooks"],"summary":"Update Webhook Subscription","description":"Update mutable fields of a webhook subscription.\n\nRequires the `webhooks:write` scope on the API key.","operationId":"update_webhook_subscription_v1_webhooks__webhook_id__patch","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"},"description":"ID of the webhook."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookSubscriptionInput"}}},"description":"Update Webhook Subscription payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionOutput"}}}}}},"delete":{"tags":["webhooks"],"summary":"Delete Webhook Subscription","description":"Permanently delete a webhook subscription.\n\nRequires the `webhooks:write` scope on the API key.","operationId":"delete_webhook_subscription_v1_webhooks__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"},"description":"ID of the webhook."}],"responses":{"204":{"description":"Successful Response"}}}},"/v1/webhooks/{webhook_id}/test":{"post":{"tags":["webhooks"],"summary":"Test Webhook Subscription","description":"Send a synthetic test event to a webhook subscription.\n\nRequires the `webhooks:write` scope on the API key.","operationId":"test_webhook_subscription_v1_webhooks__webhook_id__test_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"},"description":"ID of the webhook."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestDeliveryOutput"}}}}}}},"/v1/events":{"get":{"tags":["events"],"summary":"List Events","description":"List ingested first-party events.\n\nRequires the `events:read` scope on the API key.","operationId":"list_events_v1_events_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number.","default":1,"title":"Page"},"description":"Page number."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page.","default":10,"title":"Size"},"description":"Number of items per page."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EventSortField"},{"type":"null"}],"description":"Field to sort by.","title":"Sort By"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"desc"},"description":"Sort direction."},{"name":"event_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by event name.","title":"Event Name"},"description":"Filter by event name."},{"name":"resolution_status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FirstPartyEventResolutionStatus"},{"type":"null"}],"description":"Filter by resolution status.","title":"Resolution Status"},"description":"Filter by resolution status."},{"name":"external_event_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by external event id.","title":"External Event Id"},"description":"Filter by external event id."},{"name":"occurred_at_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return events strictly after this timestamp (exclusive).","title":"Occurred At After"},"description":"Return events strictly after this timestamp (exclusive)."},{"name":"occurred_at_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return events strictly before this timestamp (exclusive).","title":"Occurred At Before"},"description":"Return events strictly before this timestamp (exclusive)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_PublicEventOutput_"}}}}}},"post":{"tags":["events"],"summary":"Ingest Event","description":"Ingest a first-party event.\n\nEvery well-formed event is accepted and stored, whether or not its subject\ncan be correlated to a known contact or company: correlation is best-effort\nand runs asynchronously. Replaying the same `external_event_id` (or the\nexact same event content) is idempotent: the event is accepted but never\nstored or processed twice.\n\nRequires the `events:write` scope on the API key.","operationId":"ingest_event_v1_events_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEventInput"}}},"description":"Ingest Event payload"},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEventAcceptedOutput"}}}}}}},"/v1/events/{event_id}":{"get":{"tags":["events"],"summary":"Get Event","description":"Fetch a single ingested event.\n\nRequires the `events:read` scope on the API key.","operationId":"get_event_v1_events__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"},"description":"ID of the event."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEventOutput"}}}}}}},"/v1/signals/presets":{"get":{"tags":["signals"],"summary":"List Signal Presets","description":"List the presets a signal can be created from.\n\nEach preset names the detection filters `POST /v1/signals` accepts and\nwhich of them are mandatory. Presets not yet available for creation are\nomitted.\n\nRequires the `signals:read` scope on the API key.","operationId":"list_signal_presets_v1_signals_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SignalPresetPublicOutput"},"type":"array","title":"Response List Signal Presets V1 Signals Presets Get"}}}}}}},"/v1/signals/imports":{"get":{"tags":["signals"],"summary":"List Signal Imports","description":"List what the workspace's signals brought in, most recent fact first.\n\nAn entry records which signal fired, who or which company it was about,\nand whether it was imported, was already in the list, or was filtered out.\n\nRequires the `signals:read` scope on the API key.","operationId":"list_signal_imports_v1_signals_imports_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Size"}},{"name":"signal_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return only what this signal brought in.","title":"Signal Id"},"description":"Return only what this signal brought in."},{"name":"signal_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SignalType"},{"type":"null"}],"description":"Return only entries from signals of this preset.","title":"Signal Type"},"description":"Return only entries from signals of this preset."},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SignalImportKind"},{"type":"null"}],"description":"Return only people or only companies.","title":"Kind"},"description":"Return only people or only companies."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SignalImportStatus"},{"type":"null"}],"description":"Return only entries that ended in this state.","title":"Status"},"description":"Return only entries that ended in this state."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_SignalImportPublicOutput_"}}}}}}},"/v1/signals":{"get":{"tags":["signals"],"summary":"List Signals","description":"List the workspace's signals, most recently created first.\n\nRequires the `signals:read` scope on the API key.","operationId":"list_signals_v1_signals_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Size"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","description":"Also return retired signals, which never run again.","default":false,"title":"Include Archived"},"description":"Also return retired signals, which never run again."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginationEnvelope_SignalPublicOutput_"}}}}}},"post":{"tags":["signals"],"summary":"Create Signal","description":"Create a signal from a catalog preset.\n\nThe signal checks its provider daily and imports the qualified leads or\ncompanies into a destination list it creates under the same name. Read\n`GET /v1/signals/presets` first to pick the preset and learn which\ndetection filters it takes. The signal starts active and runs a first\ncheck immediately.\n\nRequires the `signals:write` scope on the API key.","operationId":"create_signal_v1_signals_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignalPublicInput"}}},"description":"Create Signal payload"},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalPublicOutput"}}}}}}},"/v1/signals/{signal_id}":{"get":{"tags":["signals"],"summary":"Get Signal","description":"Read one signal in full, including its detection and import filters.\n\nRequires the `signals:read` scope on the API key.","operationId":"get_signal_v1_signals__signal_id__get","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Signal Id"},"description":"ID of the signal."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalDetailPublicOutput"}}}}}},"patch":{"tags":["signals"],"summary":"Rename Signal","description":"Rename a signal, and its destination list with it.\n\nDetection filters, caps and enrichment settings are not editable here —\nrecreate the signal to change what it watches.\n\nRequires the `signals:write` scope on the API key.","operationId":"rename_signal_v1_signals__signal_id__patch","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Signal Id"},"description":"ID of the signal."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSignalPublicInput"}}},"description":"Rename Signal payload"},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalPublicOutput"}}}}}}},"/v1/signals/{signal_id}/pause":{"post":{"tags":["signals"],"summary":"Pause Signal","description":"Hold a signal: it stops checking its provider and stops importing\nuntil it is resumed. Everything it already imported stays in the\ndestination list.\n\nRequires the `signals:write` scope on the API key.","operationId":"pause_signal_v1_signals__signal_id__pause_post","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Signal Id"},"description":"ID of the signal."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalPublicOutput"}}}}}}},"/v1/signals/{signal_id}/resume":{"post":{"tags":["signals"],"summary":"Resume Signal","description":"Restart a paused signal. It becomes due right away, so the next check\nhappens without waiting for the daily slot. An archived signal cannot be\nresumed.\n\nRequires the `signals:write` scope on the API key.","operationId":"resume_signal_v1_signals__signal_id__resume_post","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Signal Id"},"description":"ID of the signal."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalPublicOutput"}}}}}}},"/v1/signals/{signal_id}/archive":{"post":{"tags":["signals"],"summary":"Archive Signal","description":"Retire a signal for good: it stops checking and importing, and it\ncannot be resumed. The destination list and everything already imported\nare kept. Prefer pausing when the signal should only stop for now.\n\nRequires the `signals:write` scope on the API key.","operationId":"archive_signal_v1_signals__signal_id__archive_post","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Signal Id"},"description":"ID of the signal."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalPublicOutput"}}}}}}}},"components":{"schemas":{"AccountEntryInput":{"properties":{"account_list_id":{"type":"string","format":"uuid","title":"Account List Id","description":"ID of the account list to add this entry to."},"name":{"type":"string","title":"Name","description":"Company name."},"domain":{"type":"string","title":"Domain","description":"Primary company domain."}},"additionalProperties":false,"type":"object","required":["account_list_id","name","domain"],"title":"AccountEntryInput"},"AccountEntryOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"account_list_id":{"type":"string","format":"uuid","title":"Account List Id","description":"ID of the list this entry belongs to."},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id","description":"ID of the account this entry resolved to, once matched."},"name":{"type":"string","title":"Name","description":"Company name."},"domain":{"type":"string","title":"Domain","description":"Primary company domain."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the entry was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the entry last changed."}},"type":"object","required":["id","account_list_id","account_id","name","domain","created_at","updated_at"],"title":"AccountEntryOutput"},"AccountEntrySortField":{"type":"string","enum":["created_at","updated_at","name","domain"],"title":"AccountEntrySortField"},"AccountExclusionInput":{"properties":{"domain":{"type":"string","title":"Domain","description":"Account domain to exclude."},"reason":{"$ref":"#/components/schemas/ExclusionReason","description":"Why the account is being excluded."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Free-form note for operators."},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until","description":"When the exclusion expires. Omit for a permanent exclusion."}},"type":"object","required":["domain","reason"],"title":"AccountExclusionInput"},"AccountExclusionOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Excluded account domain."},"reason":{"$ref":"#/components/schemas/ExclusionReason","description":"Reason for the exclusion."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Operator note."},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until","description":"When the exclusion expires."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the exclusion was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the exclusion last changed."}},"type":"object","required":["id","domain","reason","message","until","created_at","updated_at"],"title":"AccountExclusionOutput"},"AccountExclusionSortField":{"type":"string","enum":["created_at","updated_at","domain","reason"],"title":"AccountExclusionSortField"},"AccountListInput":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Name of the list."}},"additionalProperties":false,"type":"object","required":["name"],"title":"AccountListInput"},"AccountListOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"name":{"type":"string","title":"Name","description":"Name of the list."},"entries_count":{"type":"integer","title":"Entries Count","description":"Current number of entries in the list."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the list was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the list last changed."}},"type":"object","required":["id","name","entries_count","created_at","updated_at"],"title":"AccountListOutput"},"AccountListSortField":{"type":"string","enum":["created_at","updated_at","name"],"title":"AccountListSortField"},"ActivityChannel":{"type":"string","enum":["EMAIL","LINKEDIN","MANUAL"],"title":"ActivityChannel"},"ActivityEventType":{"type":"string","enum":["SENT","REPLIED","OPENED","LINK_CLICKED","ACCEPTED","CREATED","PAUSED","RESUMED","STOPPED","COMPLETED","SKIPPED","REOPENED"],"title":"ActivityEventType"},"ActivityPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the activity was recorded."},"payload":{"oneOf":[{"$ref":"#/components/schemas/MessageSentPayload"},{"$ref":"#/components/schemas/MessageOpenedPayload"},{"$ref":"#/components/schemas/MessageLinkClickedPayload"},{"$ref":"#/components/schemas/MessageRepliedPayload"},{"$ref":"#/components/schemas/InvitationSentPayload"},{"$ref":"#/components/schemas/InvitationAcceptedPayload"},{"$ref":"#/components/schemas/HotLeadCreatedPayload"},{"$ref":"#/components/schemas/MeetingCreatedPayload"},{"$ref":"#/components/schemas/SequenceCreatedPayload"},{"$ref":"#/components/schemas/SequencePausedPayload"},{"$ref":"#/components/schemas/SequenceResumedPayload"},{"$ref":"#/components/schemas/SequenceStoppedPayload"},{"$ref":"#/components/schemas/SequenceCompletedPayload"},{"$ref":"#/components/schemas/TaskCreatedPayload"},{"$ref":"#/components/schemas/TaskCompletedPayload"},{"$ref":"#/components/schemas/TaskSkippedPayload"},{"$ref":"#/components/schemas/TaskReopenedPayload"},{"$ref":"#/components/schemas/ContactEntryResolvedPayload"},{"$ref":"#/components/schemas/EventResolvedPayload"},{"$ref":"#/components/schemas/ContactExclusionCreatedPayload"}],"title":"Payload","description":"Discriminated event payload describing what happened.","discriminator":{"propertyName":"type","mapping":{"contact_entry.resolved":"#/components/schemas/ContactEntryResolvedPayload","contact_exclusion.created":"#/components/schemas/ContactExclusionCreatedPayload","event.resolved":"#/components/schemas/EventResolvedPayload","hot_lead.created":"#/components/schemas/HotLeadCreatedPayload","invitation.accepted":"#/components/schemas/InvitationAcceptedPayload","invitation.sent":"#/components/schemas/InvitationSentPayload","meeting.created":"#/components/schemas/MeetingCreatedPayload","message.link_clicked":"#/components/schemas/MessageLinkClickedPayload","message.opened":"#/components/schemas/MessageOpenedPayload","message.replied":"#/components/schemas/MessageRepliedPayload","message.sent":"#/components/schemas/MessageSentPayload","sequence.completed":"#/components/schemas/SequenceCompletedPayload","sequence.created":"#/components/schemas/SequenceCreatedPayload","sequence.paused":"#/components/schemas/SequencePausedPayload","sequence.resumed":"#/components/schemas/SequenceResumedPayload","sequence.stopped":"#/components/schemas/SequenceStoppedPayload","task.completed":"#/components/schemas/TaskCompletedPayload","task.created":"#/components/schemas/TaskCreatedPayload","task.reopened":"#/components/schemas/TaskReopenedPayload","task.skipped":"#/components/schemas/TaskSkippedPayload"}}}},"type":"object","required":["id","created_at","payload"],"title":"ActivityPublicOutput"},"ActivityResourceType":{"type":"string","enum":["MESSAGE","INVITATION","HOT_LEAD","MEETING","SEQUENCE_STEP","SEQUENCE","TASK"],"title":"ActivityResourceType"},"ActivitySortField":{"type":"string","enum":["created_at"],"title":"ActivitySortField"},"AttachmentInput":{"properties":{"filename":{"type":"string","title":"Filename"},"content_type":{"type":"string","title":"Content Type"},"content_id":{"type":"string","title":"Content Id"},"content":{"type":"string","title":"Content"}},"type":"object","required":["filename","content_type","content_id","content"],"title":"AttachmentInput"},"BatchItemError":{"properties":{"type":{"type":"string","title":"Type"},"message":{"type":"string","title":"Message"}},"type":"object","required":["type","message"],"title":"BatchItemError"},"BatchItemResult_AccountEntryOutput_":{"properties":{"index":{"type":"integer","title":"Index"},"status":{"$ref":"#/components/schemas/BatchItemStatus"},"resource":{"anyOf":[{"$ref":"#/components/schemas/AccountEntryOutput"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/BatchItemError"},{"type":"null"}]}},"type":"object","required":["index","status"],"title":"BatchItemResult[AccountEntryOutput]"},"BatchItemResult_AccountListOutput_":{"properties":{"index":{"type":"integer","title":"Index"},"status":{"$ref":"#/components/schemas/BatchItemStatus"},"resource":{"anyOf":[{"$ref":"#/components/schemas/AccountListOutput"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/BatchItemError"},{"type":"null"}]}},"type":"object","required":["index","status"],"title":"BatchItemResult[AccountListOutput]"},"BatchItemResult_ContactEntryOutput_":{"properties":{"index":{"type":"integer","title":"Index"},"status":{"$ref":"#/components/schemas/BatchItemStatus"},"resource":{"anyOf":[{"$ref":"#/components/schemas/ContactEntryOutput"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/BatchItemError"},{"type":"null"}]}},"type":"object","required":["index","status"],"title":"BatchItemResult[ContactEntryOutput]"},"BatchItemResult_ContactListOutput_":{"properties":{"index":{"type":"integer","title":"Index"},"status":{"$ref":"#/components/schemas/BatchItemStatus"},"resource":{"anyOf":[{"$ref":"#/components/schemas/ContactListOutput"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/BatchItemError"},{"type":"null"}]}},"type":"object","required":["index","status"],"title":"BatchItemResult[ContactListOutput]"},"BatchItemStatus":{"type":"string","enum":["CREATED","UPDATED","FAILED"],"title":"BatchItemStatus"},"BatchResponse_AccountEntryOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BatchItemResult_AccountEntryOutput_"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/BatchSummary"}},"type":"object","required":["items","summary"],"title":"BatchResponse[AccountEntryOutput]"},"BatchResponse_AccountListOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BatchItemResult_AccountListOutput_"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/BatchSummary"}},"type":"object","required":["items","summary"],"title":"BatchResponse[AccountListOutput]"},"BatchResponse_ContactEntryOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BatchItemResult_ContactEntryOutput_"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/BatchSummary"}},"type":"object","required":["items","summary"],"title":"BatchResponse[ContactEntryOutput]"},"BatchResponse_ContactListOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BatchItemResult_ContactListOutput_"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/BatchSummary"}},"type":"object","required":["items","summary"],"title":"BatchResponse[ContactListOutput]"},"BatchSummary":{"properties":{"total":{"type":"integer","title":"Total"},"succeeded":{"type":"integer","title":"Succeeded"},"failed":{"type":"integer","title":"Failed"}},"type":"object","required":["total","succeeded","failed"],"title":"BatchSummary"},"CallDisposition":{"type":"string","enum":["ANSWERED","VOICEMAIL_LEFT","NO_ANSWER","INTERESTED","NOT_INTERESTED","WRONG_NUMBER"],"title":"CallDisposition"},"CallPayload":{"properties":{"type":{"type":"string","const":"call","title":"Type","default":"call"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"disposition":{"anyOf":[{"$ref":"#/components/schemas/CallDisposition"},{"type":"null"}]},"excludeLead":{"type":"boolean","title":"Excludelead","default":false}},"type":"object","title":"CallPayload"},"ChannelType":{"type":"string","enum":["EMAIL","LINKEDIN","CALENDAR","MANUAL"],"title":"ChannelType"},"CompleteTaskPublicInput":{"properties":{"completion_source":{"$ref":"#/components/schemas/PublicTaskCompletionSource","description":"How the task was completed. Use TASK_EXECUTION when Topo performed or recorded the completion on-platform. Use EXTERNAL_CRM when the task was handled in your CRM instead — Topo marks the task completed but does not sync the completion back to the CRM, since the CRM is the source of truth.","default":"TASK_EXECUTION"},"disposition":{"anyOf":[{"$ref":"#/components/schemas/CallDisposition"},{"type":"null"}],"description":"Call outcome when completing a call task."}},"additionalProperties":false,"type":"object","title":"CompleteTaskPublicInput"},"ContactEntryInput":{"properties":{"contact_list_id":{"type":"string","format":"uuid","title":"Contact List Id","description":"ID of the contact list to add this entry to."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email. At least one of `email` or `linkedin_url` is required."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL. At least one of `email` or `linkedin_url` is required."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Phone number."},"external_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Contact Id","description":"External CRM contact identifier for CRM-backed list entries."}},"additionalProperties":false,"type":"object","required":["contact_list_id"],"title":"ContactEntryInput"},"ContactEntryOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"contact_list_id":{"type":"string","format":"uuid","title":"Contact List Id","description":"ID of the list this entry belongs to."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"ID of the contact this entry resolved to, once matched."},"external_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Contact Id","description":"External CRM contact identifier when supplied at import."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn URL."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer domain."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Phone number."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Free-form notes."},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Person's location."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the entry was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the entry last changed."}},"type":"object","required":["id","contact_list_id","contact_id","external_contact_id","first_name","last_name","email","linkedin_url","company_name","company_domain","job_title","phone","description","location","created_at","updated_at"],"title":"ContactEntryOutput"},"ContactEntryResolvedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"type":{"type":"string","const":"contact_entry.resolved","title":"Type","default":"contact_entry.resolved"},"contactEntryId":{"type":"string","format":"uuid","title":"Contactentryid"},"contactListId":{"type":"string","format":"uuid","title":"Contactlistid"},"externalContactId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Externalcontactid"}},"type":"object","required":["organizationId","contactEntryId","contactListId"],"title":"ContactEntryResolvedPayload"},"ContactEntrySortField":{"type":"string","enum":["created_at","updated_at","email","last_name"],"title":"ContactEntrySortField"},"ContactExclusionCreatedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"type":{"type":"string","const":"contact_exclusion.created","title":"Type","default":"contact_exclusion.created"},"contactExclusionId":{"type":"string","format":"uuid","title":"Contactexclusionid"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"linkedinUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedinurl"},"reason":{"$ref":"#/components/schemas/ExclusionReason"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}},"type":"object","required":["organizationId","contactExclusionId","reason"],"title":"ContactExclusionCreatedPayload"},"ContactExclusionInput":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email to exclude. At least one of `email` or `linkedin_url` is required."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn URL to exclude. At least one of `email` or `linkedin_url` is required."},"reason":{"$ref":"#/components/schemas/ExclusionReason","description":"Why the contact is being excluded."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Free-form note for operators."},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until","description":"When the exclusion expires. Omit for a permanent exclusion."}},"type":"object","required":["reason"],"title":"ContactExclusionInput"},"ContactExclusionOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Excluded email."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Excluded LinkedIn URL."},"reason":{"$ref":"#/components/schemas/ExclusionReason","description":"Reason for the exclusion."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Operator note."},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until","description":"When the exclusion expires."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the exclusion was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the exclusion last changed."}},"type":"object","required":["id","email","linkedin_url","reason","message","until","created_at","updated_at"],"title":"ContactExclusionOutput"},"ContactExclusionSortField":{"type":"string","enum":["created_at","updated_at","email","reason"],"title":"ContactExclusionSortField"},"ContactListInput":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Name of the list."},"default_sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Sequence Template Id","description":"Sequence template that new entries are auto-enrolled into."}},"additionalProperties":false,"type":"object","required":["name"],"title":"ContactListInput"},"ContactListOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the list."},"default_sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Sequence Template Id","description":"Default sequence template for new entries."},"default_sequence_template":{"anyOf":[{"$ref":"#/components/schemas/PublicSequenceTemplateSummary"},{"type":"null"}],"description":"Summary of the default sequence template for new entries."},"entries_count":{"type":"integer","title":"Entries Count","description":"Current number of entries in the list."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the list was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the list last changed."}},"type":"object","required":["id","name","default_sequence_template_id","entries_count","created_at","updated_at"],"title":"ContactListOutput"},"ContactListSortField":{"type":"string","enum":["created_at","updated_at","name"],"title":"ContactListSortField"},"CreateAccountEntriesInput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountEntryInput"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"Account entries to create."}},"additionalProperties":false,"type":"object","required":["items"],"title":"CreateAccountEntriesInput"},"CreateAccountListsInput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountListInput"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"Account lists to create."}},"additionalProperties":false,"type":"object","required":["items"],"title":"CreateAccountListsInput"},"CreateContactEntriesInput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactEntryInput"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"Contact entries to create."}},"additionalProperties":false,"type":"object","required":["items"],"title":"CreateContactEntriesInput"},"CreateContactListsInput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactListInput"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"Contact lists to create."}},"additionalProperties":false,"type":"object","required":["items"],"title":"CreateContactListsInput"},"CreateSignalPublicInput":{"properties":{"signal_type":{"$ref":"#/components/schemas/SignalType","description":"Which preset to build. Read `GET /v1/signals/presets` first — a preset not listed there cannot be created."},"name":{"$ref":"#/components/schemas/SignalName","description":"Name of the signal and of the destination list it creates."},"search_filters":{"$ref":"#/components/schemas/FilterTexts","description":"Detection filters, keyed by the preset's `filter_keys`. Its `required_filter_keys` must all be present.","default":{}},"import_target":{"anyOf":[{"$ref":"#/components/schemas/TargetEntity"},{"type":"null"}],"description":"Leave empty to follow the preset's own scope. A company preset may set PEOPLE to import the people behind its detected companies instead of the companies themselves."},"event_subject":{"anyOf":[{"$ref":"#/components/schemas/TargetEntity"},{"type":"null"}],"description":"What your own events identify, for a custom-event preset only: PEOPLE for email or LinkedIn subjects, COMPANIES for domains."},"max_per_run":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Per Run","description":"Daily ceiling on imported entries. Cannot be combined with `max_companies_per_run`."},"max_companies_per_run":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Companies Per Run","description":"Daily ceiling on detected companies consumed. Only for a company preset importing people."},"max_contacts_per_company":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Contacts Per Company","description":"How many people to import per detected company. Requires `max_companies_per_run`."},"enrich_email":{"type":"boolean","title":"Enrich Email","description":"Whether imported leads get their email enriched.","default":true},"enrich_phones":{"type":"boolean","title":"Enrich Phones","description":"Whether imported leads get their phone enriched.","default":true},"sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sequence Template Id","description":"Sequence template imported leads are enrolled into. People destinations only."},"import_search_filters":{"$ref":"#/components/schemas/FilterTexts","description":"Filters narrowing who or what gets imported once a fact is detected: personas for a people target, firmographics for a company target.","default":{}}},"type":"object","required":["signal_type","name"],"title":"CreateSignalPublicInput"},"CreateTodoTaskPublicInput":{"properties":{"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title","description":"Task title."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Optional notes."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact to link the task to."},"due_date":{"type":"string","format":"date","title":"Due Date","description":"Due date."},"assignee_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee User Id","description":"User to assign the task to. Defaults to the API key owner."}},"additionalProperties":false,"type":"object","required":["title","due_date"],"title":"CreateTodoTaskPublicInput"},"CreatedWebhookSubscriptionOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"name":{"type":"string","title":"Name","description":"Name of the subscription."},"url":{"type":"string","title":"Url","description":"Delivery URL events are POSTed to."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Free-form description."},"event_types":{"items":{"$ref":"#/components/schemas/OutboundWebhookEventType"},"type":"array","title":"Event Types","description":"Event types this subscription receives."},"sequence_template_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Sequence Template Ids","description":"Sequence-template scope."},"status":{"$ref":"#/components/schemas/WebhookSubscriptionStatus","description":"Lifecycle status."},"secret_prefix":{"type":"string","title":"Secret Prefix","description":"Leading characters of the signing secret, safe to display."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the subscription was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the subscription last changed."},"secret":{"type":"string","title":"Secret","description":"Signing secret. Returned ONLY in this response — store it now, it is never returned again."}},"type":"object","required":["id","name","url","description","event_types","sequence_template_ids","status","secret_prefix","created_at","updated_at","secret"],"title":"CreatedWebhookSubscriptionOutput"},"CrmFieldWritePublicInput":{"properties":{"property":{"type":"string","title":"Property","description":"The CRM property to write. Custom properties are supported."},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value","description":"The value to write, as text. Leave empty to clear the field."}},"type":"object","required":["property"],"title":"CrmFieldWritePublicInput"},"EmailAddresses":{"properties":{"to":{"items":{"$ref":"#/components/schemas/EmailContact"},"type":"array","title":"To"},"cc":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailContact"},"type":"array"},{"type":"null"}],"title":"Cc"},"bcc":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailContact"},"type":"array"},{"type":"null"}],"title":"Bcc"},"replyTo":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailContact"},"type":"array"},{"type":"null"}],"title":"Replyto"}},"type":"object","required":["to"],"title":"EmailAddresses"},"EmailContact":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"EmailContact"},"EmailReplyPayload":{"properties":{"type":{"type":"string","const":"email_reply","title":"Type","default":"email_reply"},"body":{"type":"string","title":"Body"},"closeTask":{"type":"boolean","title":"Closetask","default":true},"emailAddresses":{"anyOf":[{"$ref":"#/components/schemas/EmailAddresses"},{"type":"null"}]},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentInput"},"type":"array","title":"Attachments","default":[]}},"type":"object","required":["body"],"title":"EmailReplyPayload"},"EnrichAccountPublicInput":{"properties":{"domain":{"type":"string","minLength":1,"title":"Domain","description":"Website domain of the company to look up."}},"additionalProperties":false,"type":"object","required":["domain"],"title":"EnrichAccountPublicInput"},"EnrichAccountPublicOutput":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name."},"domain":{"type":"string","title":"Domain","description":"Website domain that was looked up."},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"What the company does, summarized from its website when no stored data exists."},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count","description":"Known headcount."},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Known industry."}},"type":"object","required":["domain"],"title":"EnrichAccountPublicOutput"},"EnrichContactPublicInput":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email, if known."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL, if known."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name, if known."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name, if known."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name, if known."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain, if known."}},"additionalProperties":false,"type":"object","title":"EnrichContactPublicInput"},"EnrichContactPublicOutput":{"properties":{"completed":{"type":"boolean","title":"Completed","description":"Whether enrichment finished. `false` when a provider answers later."},"pending_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pending Provider","description":"Provider still working on the missing fields."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL."},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain."}},"type":"object","required":["completed"],"title":"EnrichContactPublicOutput"},"EnrollContactListPublicInput":{"properties":{"sequence_template_id":{"type":"string","format":"uuid","title":"Sequence Template Id","description":"Sequence template to enroll the contacts into."},"contact_ids":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1,"title":"Contact Ids","description":"Contacts to enroll. Any id that is not a contact of this workspace is skipped."},"conflict_strategy":{"$ref":"#/components/schemas/EnrollmentConflictStrategy","description":"What to do with contacts already enrolled or recently contacted.","default":"SKIP"},"reenroll_cooldown_days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Reenroll Cooldown Days","description":"How many days to wait before a contact can be enrolled again. Omit to use the workspace default."}},"additionalProperties":false,"type":"object","required":["sequence_template_id","contact_ids"],"title":"EnrollContactListPublicInput"},"EnrollContactListPublicOutput":{"properties":{"enrolled_count":{"type":"integer","title":"Enrolled Count","description":"Contacts enrolled."},"skipped_count":{"type":"integer","title":"Skipped Count","description":"Contacts left alone, because the id is unknown here or the conflict strategy said to skip them."},"replaced_count":{"type":"integer","title":"Replaced Count","description":"Contacts whose existing sequence was replaced."},"enrolled_contact_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Enrolled Contact Ids","description":"Contacts that were enrolled."},"created_sequence_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Created Sequence Ids","description":"Sequence runs started by this call."}},"type":"object","required":["enrolled_count","skipped_count","replaced_count","enrolled_contact_ids","created_sequence_ids"],"title":"EnrollContactListPublicOutput"},"EnrollContactPublicInput":{"properties":{"contact_id":{"type":"string","format":"uuid","title":"Contact Id","description":"Contact to enroll."},"sequence_template_id":{"type":"string","format":"uuid","title":"Sequence Template Id","description":"Active template to instantiate the sequence from."}},"additionalProperties":false,"type":"object","required":["contact_id","sequence_template_id"],"title":"EnrollContactPublicInput"},"EnrollmentConflictStrategy":{"type":"string","enum":["SKIP","ADD_IF_ALL_COMPLETED","ADD_ANYWAY","REPLACE"],"title":"EnrollmentConflictStrategy"},"EventResolvedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"type":{"type":"string","const":"event.resolved","title":"Type","default":"event.resolved"},"eventId":{"type":"string","format":"uuid","title":"Eventid"},"eventName":{"type":"string","title":"Eventname"},"resolutionStatus":{"$ref":"#/components/schemas/FirstPartyEventResolutionStatus"},"accountId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Accountid"},"externalEventId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Externaleventid"}},"type":"object","required":["organizationId","eventId","eventName","resolutionStatus"],"title":"EventResolvedPayload"},"EventSortField":{"type":"string","enum":["occurred_at"],"title":"EventSortField"},"ExclusionReason":{"type":"string","enum":["BAD_TIMING","BOUNCED","COMPETITOR","CONTACT_REFUSED","INTERESTED","MEETING","OTHER","OUT_OF_OFFICE","UNKNOWN","UNSUBSCRIBED","WRONG_PERSON","EXCLUDE_FROM_SEARCH","EXCLUDE_FROM_CRM","REFERRAL","LEFT_COMPANY"],"title":"ExclusionReason"},"FetchOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Typed id of the record, in the form `<type>:<uuid>`."},"type":{"type":"string","enum":["lead","account","sequence_template","task"],"title":"Type","description":"Kind of record returned."},"title":{"type":"string","title":"Title","description":"Display name of the record."},"text":{"type":"string","title":"Text","description":"Readable rendering of the record, for display and search indexing."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Deep link to the record in the Topo app, when it has a page."},"metadata":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Metadata","description":"Every field the record's detail read returns."}},"type":"object","required":["id","type","title","text","metadata"],"title":"FetchOutput"},"FilterFieldKey":{"type":"string","enum":["job_titles","locations","employee_count_ranges","keywords","employer_names","exact_employer_names","exclude_job_titles","all_titles","names","exclude_names","skills","exclude_skills","languages","schools","degrees","field_of_study","exclude_locations","geographies","exclude_keywords","exclude_employer_names","employer_domains","exclude_employer_domains","past_employer_names","company_types","hq_countries","hq_states","largest_headcount_countries","markets","acquisition_status","linkedin_connections_min","linkedin_connections_max","linkedin_followers_min","linkedin_followers_max","company_revenue_min","company_revenue_max","year_founded_min","year_founded_max","open_to_work","is_freelance","has_email","has_business_email","is_public_company","employee_start_date_after","competitor_domains","query","company_technology_slug_or","company_technology_slug_and","company_technology_slug_not","funding_stage_or","industry_or","industry_not","company_country_code_or","company_country_code_not","company_name_or","company_name_not","company_name_partial_match_or","company_domain_or","company_domain_not","company_description_pattern_or","min_employee_count","max_employee_count","company_size","min_funding_usd","max_funding_usd","last_funding_round_after","last_funding_round_before","funding_raised_max_age_days","only_yc_companies","company_type","job_title_or","job_title_not","job_description_contains_or","job_location_pattern_or","posted_at_max_age_days","tech_first_detected_after","tech_first_detected_before","tech_last_detected_before","tech_last_detected_after","tech_first_detected_max_age_days","min_matching_jobs","seniority","job_functions","departments","exclude_seniority","exclude_job_functions","exclude_hq_countries","past_job_titles","posted_on_linkedin","years_of_experience","follows_your_company","exact_job_titles","exclude_exact_job_titles","years_of_experience_min","years_of_experience_max","has_profile_picture","naics_codes","monthly_visitors_min","monthly_visitors_max","past_employer_titles","company_keywords","exclude_company_keywords","headcount_range_sales","headcount_range_engineering","headcount_range_marketing","headcount_range_operations","headcount_range_finance","headcount_range_human_resources","headcount_range_support","headcount_range_information_technology","headcount_range_business_development","headcount_growth_6m_min","headcount_growth_6m_max","headcount_growth_12m_min","headcount_growth_12m_max","followers_growth_6m_min","followers_growth_6m_max","followers_growth_12m_min","followers_growth_12m_max","web_traffic_growth_6m_min","web_traffic_growth_6m_max","web_traffic_growth_12m_min","web_traffic_growth_12m_max","job_openings_growth_6m_min","job_openings_growth_6m_max","job_openings_growth_12m_min","job_openings_growth_12m_max","contact_list_ids","account_list_ids","first_party_event_name","news_query_or","news_category_or","news_published_max_age_days","linkedin_company_url_or","linkedin_post_max_age_days","linkedin_keyword_or","linkedin_followed_company_url_or"],"title":"FilterFieldKey"},"FilterTexts":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"propertyNames":{"$ref":"#/components/schemas/FilterFieldKey"},"type":"object"},"FirstPartyEventResolutionStatus":{"type":"string","enum":["PENDING","RESOLVED","UNRESOLVED"],"title":"FirstPartyEventResolutionStatus"},"GetAndEnrichContactPublicInput":{"properties":{"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact to load, if you have its id."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Load the contact by email instead."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Load the contact by LinkedIn profile URL instead."}},"additionalProperties":false,"type":"object","title":"GetAndEnrichContactPublicInput"},"GetAndEnrichContactPublicOutput":{"properties":{"found":{"type":"boolean","title":"Found","description":"Whether a contact matching the input exists in the workspace."},"completed":{"type":"boolean","title":"Completed","description":"Whether enrichment finished. `false` when a provider answers later."},"pending_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pending Provider","description":"Provider still working on the missing fields."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Matched contact in this workspace."},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id","description":"Account the matched contact belongs to."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL."},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"Country."},"enriched":{"type":"boolean","title":"Enriched","description":"Whether email, job title, and company domain are all known."},"active_sequence_count":{"type":"integer","title":"Active Sequence Count","description":"Sequences the contact is currently enrolled in."},"active_sequence_names":{"items":{"type":"string"},"type":"array","title":"Active Sequence Names","description":"Names of the sequence templates currently running."}},"type":"object","required":["found","completed","enriched","active_sequence_count","active_sequence_names"],"title":"GetAndEnrichContactPublicOutput"},"HotLeadCreatedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"hot_lead.created","title":"Type","default":"hot_lead.created"},"hotLead":{"anyOf":[{"$ref":"#/components/schemas/WebhookHotLeadSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"HotLeadCreatedPayload"},"InvitationAcceptedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"invitation.accepted","title":"Type","default":"invitation.accepted"}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"InvitationAcceptedPayload"},"InvitationSentMetadata":{"properties":{"stepNumber":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stepnumber"}},"type":"object","title":"InvitationSentMetadata"},"InvitationSentPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"invitation.sent","title":"Type","default":"invitation.sent"},"metadata":{"$ref":"#/components/schemas/InvitationSentMetadata"}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel","metadata"],"title":"InvitationSentPayload"},"JsonValue":{},"LeadTransitionPublicInput":{"properties":{"contact_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Contact Ids","description":"Specific contacts waiting for review. Omit to process all leads waiting in FOUND status."}},"type":"object","title":"LeadTransitionPublicInput"},"LeadTransitionPublicOutput":{"properties":{"updated_count":{"type":"integer","title":"Updated Count","description":"Number of leads transitioned to the target status."},"skipped_count":{"type":"integer","title":"Skipped Count","description":"Number of leads skipped (not in FOUND status, invalid transition, or not found)."}},"type":"object","required":["updated_count","skipped_count"],"title":"LeadTransitionPublicOutput"},"LinkedinReplyPayload":{"properties":{"type":{"type":"string","const":"linkedin_reply","title":"Type","default":"linkedin_reply"},"body":{"type":"string","title":"Body"},"closeTask":{"type":"boolean","title":"Closetask","default":false}},"type":"object","required":["body"],"title":"LinkedinReplyPayload"},"MeOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the API key."},"organization_id":{"type":"string","format":"uuid","title":"Organization Id","description":"Workspace the key belongs to."},"organization_name":{"type":"string","title":"Organization Name","description":"Workspace display name."},"name":{"type":"string","title":"Name","description":"Name of the key."},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id","description":"User who issued the key, when it was issued by a person. Null for a key created without a user."},"key_prefix":{"type":"string","title":"Key Prefix","description":"Leading characters of the raw key, safe to display."},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","description":"Permissions granted to this key."},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At","description":"When the key was last used to make a request."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the key was issued."}},"type":"object","required":["id","organization_id","organization_name","name","user_id","key_prefix","scopes","last_used_at","created_at"],"title":"MeOutput"},"MeetingCreatedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"meeting.created","title":"Type","default":"meeting.created"},"meeting":{"anyOf":[{"$ref":"#/components/schemas/WebhookMeetingSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"MeetingCreatedPayload"},"MembershipRole":{"type":"string","enum":["OWNER","ADMIN","MEMBER"],"title":"MembershipRole"},"MessageCategoryPublicOutput":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id","description":"Unique identifier of the message."},"category":{"$ref":"#/components/schemas/MessageReplyCategory","description":"Updated reply category."}},"type":"object","required":["message_id","category"],"title":"MessageCategoryPublicOutput"},"MessageDirection":{"type":"string","enum":["INBOUND","OUTBOUND"],"title":"MessageDirection"},"MessageLinkClickedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"message.link_clicked","title":"Type","default":"message.link_clicked"},"message":{"anyOf":[{"$ref":"#/components/schemas/WebhookMessageSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"MessageLinkClickedPayload"},"MessageOpenedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"message.opened","title":"Type","default":"message.opened"},"message":{"anyOf":[{"$ref":"#/components/schemas/WebhookMessageSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"MessageOpenedPayload"},"MessagePublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"channel":{"$ref":"#/components/schemas/ChannelType","description":"Channel the message was sent on."},"direction":{"$ref":"#/components/schemas/MessageDirection","description":"Inbound (from the contact) or outbound (sent by your team)."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"Email subject line, if any."},"body":{"type":"string","title":"Body","description":"Message body. Inbound messages have quoted reply history stripped."},"sent_at":{"type":"string","format":"date-time","title":"Sent At","description":"When the message was sent or received."},"sender_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sender Id","description":"Sending mailbox that sent an outbound message. Null for inbound messages from the contact."},"sender":{"anyOf":[{"$ref":"#/components/schemas/PublicSenderSummary"},{"type":"null"}],"description":"Summary of the sending mailbox for outbound messages."}},"type":"object","required":["id","channel","direction","subject","body","sent_at","sender_id"],"title":"MessagePublicOutput"},"MessageRepliedMetadata":{"properties":{"replyCategory":{"anyOf":[{"$ref":"#/components/schemas/MessageReplyCategory"},{"type":"null"}]}},"type":"object","title":"MessageRepliedMetadata"},"MessageRepliedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"message.replied","title":"Type","default":"message.replied"},"metadata":{"$ref":"#/components/schemas/MessageRepliedMetadata","default":{}},"message":{"anyOf":[{"$ref":"#/components/schemas/WebhookMessageSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"MessageRepliedPayload"},"MessageReplyCategory":{"type":"string","enum":["MEETING","INTERESTED","BAD_TIMING","REFERRAL","WRONG_PERSON","LEFT_COMPANY","OUT_OF_OFFICE","SPAM_FILTER","UNKNOWN","UNSUBSCRIBED","BOUNCED"],"title":"MessageReplyCategory"},"MessageSentPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"message.sent","title":"Type","default":"message.sent"},"message":{"anyOf":[{"$ref":"#/components/schemas/WebhookMessageSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"MessageSentPayload"},"MessageSortField":{"type":"string","enum":["sent_at"],"title":"MessageSortField"},"NewLeadReviewAction":{"type":"string","enum":["APPROVE","REFUSE"],"title":"NewLeadReviewAction"},"NewLeadReviewPayload":{"properties":{"type":{"type":"string","const":"new_lead_review","title":"Type","default":"new_lead_review"},"action":{"$ref":"#/components/schemas/NewLeadReviewAction"},"exclusion":{"anyOf":[{"$ref":"#/components/schemas/TaskExclusionScope"},{"type":"null"}]}},"type":"object","required":["action"],"title":"NewLeadReviewPayload"},"OutboundWebhookEventType":{"type":"string","enum":["message.sent","message.opened","message.link_clicked","message.replied","invitation.sent","invitation.accepted","hot_lead.created","meeting.created","sequence.created","sequence.paused","sequence.resumed","sequence.stopped","sequence.completed","task.created","task.completed","task.skipped","task.reopened","contact_entry.resolved","event.resolved","contact_exclusion.created"],"title":"OutboundWebhookEventType"},"PauseSequenceInput":{"properties":{"paused_until":{"type":"string","format":"date-time","title":"Paused Until","description":"When the sequence should resume."}},"type":"object","required":["paused_until"],"title":"PauseSequenceInput"},"PlaybookApprovalAction":{"type":"string","enum":["APPROVE","REJECT"],"title":"PlaybookApprovalAction"},"PlaybookApprovalPayload":{"properties":{"type":{"type":"string","const":"playbook_approval","title":"Type","default":"playbook_approval"},"action":{"$ref":"#/components/schemas/PlaybookApprovalAction"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","required":["action"],"title":"PlaybookApprovalPayload"},"PlaybookPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the playbook."},"name":{"type":"string","title":"Name","description":"Name of the playbook."},"status":{"$ref":"#/components/schemas/PlaybookStatus","description":"Lifecycle status of the playbook."},"trigger_type":{"$ref":"#/components/schemas/PlaybookTriggerType","description":"How the playbook is triggered."},"run_stats":{"anyOf":[{"$ref":"#/components/schemas/PlaybookRunStatsPublicOutput"},{"type":"null"}],"description":"Execution statistics over the last 7 days, included when loading a single playbook."}},"type":"object","required":["id","name","status","trigger_type"],"title":"PlaybookPublicOutput"},"PlaybookRunPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the run."},"playbook_id":{"type":"string","format":"uuid","title":"Playbook Id","description":"Playbook that was executed."},"status":{"$ref":"#/components/schemas/PlaybookRunStatus","description":"Execution status of the run."},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When the run started executing."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created."},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Failure reason if the run failed."}},"type":"object","required":["id","playbook_id","status","created_at"],"title":"PlaybookRunPublicOutput"},"PlaybookRunStatsPublicOutput":{"properties":{"runs_last_7_days":{"type":"integer","title":"Runs Last 7 Days","description":"Total number of runs in the last 7 days."},"succeeded_last_7_days":{"type":"integer","title":"Succeeded Last 7 Days","description":"Number of succeeded runs in the last 7 days."},"failed_last_7_days":{"type":"integer","title":"Failed Last 7 Days","description":"Number of failed runs in the last 7 days."},"waiting_on_approval_last_7_days":{"type":"integer","title":"Waiting On Approval Last 7 Days","description":"Number of runs waiting on approval in the last 7 days."},"prospects_enrolled_last_7_days":{"type":"integer","title":"Prospects Enrolled Last 7 Days","description":"Number of prospects enrolled in the last 7 days."}},"type":"object","required":["runs_last_7_days","succeeded_last_7_days","failed_last_7_days","waiting_on_approval_last_7_days","prospects_enrolled_last_7_days"],"title":"PlaybookRunStatsPublicOutput"},"PlaybookRunStatus":{"type":"string","enum":["PENDING","RUNNING","SUCCEEDED","FAILED","REJECTED"],"title":"PlaybookRunStatus"},"PlaybookStatus":{"type":"string","enum":["DRAFT","ENABLED","PAUSED"],"title":"PlaybookStatus"},"PlaybookTriggerType":{"type":"string","enum":["SIGNAL","SCHEDULE","EVENT","INBOUND_REPLY","MANUAL","CSV"],"title":"PlaybookTriggerType"},"PublicAccountOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the account."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name."},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Primary company domain."},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id","description":"User who owns this account, if any."},"owner":{"anyOf":[{"$ref":"#/components/schemas/PublicUserSummary"},{"type":"null"}],"description":"Summary of the user who owns this account."},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At","description":"When this account was first associated with the organization."},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At","description":"When this account was last touched in the organization."}},"type":"object","required":["id","first_seen_at","last_seen_at"],"title":"PublicAccountOutput"},"PublicAccountVariablesOutput":{"properties":{"variables":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Variables","description":"Custom variables stored on the account for this workspace."}},"type":"object","required":["variables"],"title":"PublicAccountVariablesOutput"},"PublicContactOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the contact."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL."},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City."},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","description":"State."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"Country."},"profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Url","description":"Profile picture URL."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain."},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id","description":"Account this contact is linked to. Use it with the Accounts endpoints."},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id","description":"User who owns this contact, if any."},"owner":{"anyOf":[{"$ref":"#/components/schemas/PublicUserSummary"},{"type":"null"}],"description":"Summary of the user who owns this contact."},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At","description":"When this contact was first associated with the organization."},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At","description":"When this contact was last touched in the organization."}},"type":"object","required":["id","first_seen_at","last_seen_at"],"title":"PublicContactOutput"},"PublicContactSortField":{"type":"string","enum":["first_seen_at","last_seen_at","email"],"title":"PublicContactSortField"},"PublicContactSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the contact."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain."}},"type":"object","required":["id"],"title":"PublicContactSummary"},"PublicContactVariableScope":{"type":"string","enum":["contact","account"],"title":"PublicContactVariableScope"},"PublicContactVariablesOutput":{"properties":{"contact_variables":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Contact Variables","description":"Custom variables stored on the contact for this workspace."},"account_variables":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Account Variables","description":"Custom variables stored on the contact's account for this workspace. Also manageable through the Account variables endpoints."}},"type":"object","required":["contact_variables","account_variables"],"title":"PublicContactVariablesOutput"},"PublicEventAcceptedOutput":{"properties":{"accepted":{"type":"boolean","title":"Accepted","description":"Whether the event was accepted for processing."},"idempotency_key":{"type":"string","title":"Idempotency Key","description":"Key under which the event was deduplicated."}},"type":"object","required":["accepted","idempotency_key"],"title":"PublicEventAcceptedOutput"},"PublicEventInput":{"properties":{"event_name":{"type":"string","maxLength":255,"minLength":1,"title":"Event Name","description":"Custom event name (1–255 characters)."},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At","description":"RFC 3339 timestamp when the event occurred."},"external_event_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"External Event Id","description":"Optional stable identifier from the caller's system, used for idempotent replays."},"subject":{"$ref":"#/components/schemas/PublicEventSubjectInput","description":"Event subject identifiers; at least one field is required."},"payload":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object"},{"type":"null"}],"title":"Payload","description":"Free-form JSON attributes for the event."}},"additionalProperties":false,"type":"object","required":["event_name","occurred_at","subject"],"title":"PublicEventInput"},"PublicEventOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"event_name":{"type":"string","title":"Event Name","description":"Custom event name."},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At","description":"When the event occurred in the source system."},"external_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Event Id","description":"Stable identifier from the caller's system, if provided."},"subject":{"$ref":"#/components/schemas/PublicEventSubjectOutput","description":"Subject identifiers submitted with the event."},"payload":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Payload","description":"Free-form JSON attributes for the event."},"resolution_status":{"$ref":"#/components/schemas/FirstPartyEventResolutionStatus","description":"Whether the subject has been matched to a contact or account."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Matched org-scoped contact, when resolved."},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id","description":"Matched org-scoped account, when resolved."},"received_at":{"type":"string","format":"date-time","title":"Received At","description":"When Topo received and stored the event."},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At","description":"When subject resolution completed, if applicable."}},"type":"object","required":["id","event_name","occurred_at","subject","payload","resolution_status","received_at"],"title":"PublicEventOutput"},"PublicEventSubjectInput":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email address of the event subject."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL of the event subject."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Company domain associated with the event subject."},"external_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Contact Id","description":"Contact identifier in the connected CRM."},"external_company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Company Id","description":"Company identifier in the connected CRM."}},"additionalProperties":false,"type":"object","title":"PublicEventSubjectInput"},"PublicEventSubjectOutput":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email address of the event subject."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL of the event subject."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Company domain associated with the event subject."},"external_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Contact Id","description":"Contact identifier in the connected CRM."},"external_company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Company Id","description":"Company identifier in the connected CRM."}},"type":"object","title":"PublicEventSubjectOutput"},"PublicPaginationEnvelope_AccountEntryOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountEntryOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[AccountEntryOutput]"},"PublicPaginationEnvelope_AccountExclusionOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountExclusionOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[AccountExclusionOutput]"},"PublicPaginationEnvelope_AccountListOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountListOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[AccountListOutput]"},"PublicPaginationEnvelope_ActivityPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[ActivityPublicOutput]"},"PublicPaginationEnvelope_ContactEntryOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactEntryOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[ContactEntryOutput]"},"PublicPaginationEnvelope_ContactExclusionOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactExclusionOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[ContactExclusionOutput]"},"PublicPaginationEnvelope_ContactListOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactListOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[ContactListOutput]"},"PublicPaginationEnvelope_MessagePublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MessagePublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[MessagePublicOutput]"},"PublicPaginationEnvelope_PlaybookPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlaybookPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[PlaybookPublicOutput]"},"PublicPaginationEnvelope_PlaybookRunPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlaybookRunPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[PlaybookRunPublicOutput]"},"PublicPaginationEnvelope_PublicAccountOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicAccountOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[PublicAccountOutput]"},"PublicPaginationEnvelope_PublicContactOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicContactOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[PublicContactOutput]"},"PublicPaginationEnvelope_PublicEventOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicEventOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[PublicEventOutput]"},"PublicPaginationEnvelope_PublicUserOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicUserOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[PublicUserOutput]"},"PublicPaginationEnvelope_SequencePublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SequencePublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[SequencePublicOutput]"},"PublicPaginationEnvelope_SequenceTemplatePublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SequenceTemplatePublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[SequenceTemplatePublicOutput]"},"PublicPaginationEnvelope_SignalImportPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignalImportPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[SignalImportPublicOutput]"},"PublicPaginationEnvelope_SignalPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignalPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[SignalPublicOutput]"},"PublicPaginationEnvelope_TaskPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TaskPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[TaskPublicOutput]"},"PublicPaginationEnvelope_ThreadSummaryPublicOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ThreadSummaryPublicOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[ThreadSummaryPublicOutput]"},"PublicPaginationEnvelope_WebhookSubscriptionOutput_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookSubscriptionOutput"},"type":"array","title":"Items","description":"Records on this page."},"total_count":{"type":"integer","title":"Total Count","description":"Total number of records matching the query."},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more pages remain after the current one."}},"type":"object","required":["items","total_count","total_pages","has_more"],"title":"PublicPaginationEnvelope[WebhookSubscriptionOutput]"},"PublicSenderSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the sending mailbox."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Mailbox email address."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Sender display name from the linked sender identity."}},"type":"object","required":["id"],"title":"PublicSenderSummary"},"PublicSequenceTemplateSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the sequence template."},"name":{"type":"string","title":"Name","description":"Template name."}},"type":"object","required":["id","name"],"title":"PublicSequenceTemplateSummary"},"PublicStopSequenceScope":{"type":"string","enum":["CONTACT","ACCOUNT"],"title":"PublicStopSequenceScope"},"PublicTaskCompletionSource":{"type":"string","enum":["TASK_EXECUTION","EXTERNAL_CRM"],"title":"PublicTaskCompletionSource"},"PublicUpdateAccountVariablesInput":{"properties":{"variables":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Variables","description":"Variables to merge into the account's variables. Existing keys are overwritten."}},"type":"object","required":["variables"],"title":"PublicUpdateAccountVariablesInput"},"PublicUpdateContactVariablesInput":{"properties":{"contact_variables":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Contact Variables","description":"Variables to merge into the contact's variables. Existing keys are overwritten."},"account_variables":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Account Variables","description":"Variables to merge into the account's variables. Existing keys are overwritten."}},"type":"object","title":"PublicUpdateContactVariablesInput"},"PublicUserOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the user. Use as assignee_user_id or owner_user_id."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"User's email address."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"User's display name."},"role":{"$ref":"#/components/schemas/MembershipRole","description":"User's role in the organization."}},"type":"object","required":["id","role"],"title":"PublicUserOutput"},"PublicUserSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the user."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name."},"email":{"type":"string","title":"Email","description":"Email address."}},"type":"object","required":["id","email"],"title":"PublicUserSummary"},"QualifyContactPublicInput":{"properties":{"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact to qualify. Its stored details fill in the fields below."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain."},"icp_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icp Context","description":"Description of your ideal customer profile to check the contact against."},"criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Criteria","description":"Extra qualification criteria the contact must meet."}},"additionalProperties":false,"type":"object","title":"QualifyContactPublicInput"},"QualifyContactPublicOutput":{"properties":{"verdict":{"type":"boolean","title":"Verdict","description":"Whether the contact matches the profile and criteria."},"score":{"type":"integer","title":"Score","description":"Qualification score out of 100."},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons","description":"Why the verdict was reached, one reason per entry."}},"type":"object","required":["verdict","score","reasons"],"title":"QualifyContactPublicOutput"},"ReassignAccountOwnerPublicInput":{"properties":{"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id","description":"User to assign as owner. Pass null to clear the owner."}},"type":"object","required":["owner_user_id"],"title":"ReassignAccountOwnerPublicInput"},"ReassignContactOwnerPublicInput":{"properties":{"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id","description":"User to assign as owner. Pass null to clear the owner."}},"type":"object","required":["owner_user_id"],"title":"ReassignContactOwnerPublicInput"},"ReassignScope":{"type":"string","enum":["TASK","SEQUENCE"],"title":"ReassignScope"},"ReassignTaskPublicInput":{"properties":{"assignee_user_id":{"type":"string","format":"uuid","title":"Assignee User Id","description":"User to assign the task to."},"scope":{"$ref":"#/components/schemas/ReassignScope","description":"Whether to reassign just this task or every actionable task in the same sequence.","default":"TASK"}},"type":"object","required":["assignee_user_id"],"title":"ReassignTaskPublicInput"},"RefillFrequency":{"type":"string","enum":["DAILY","WEEKLY"],"title":"RefillFrequency"},"ReplyCategoryMetricsPublicOutput":{"properties":{"reply_category":{"$ref":"#/components/schemas/MessageReplyCategory","description":"Category the replies were classified into."},"unique_replies":{"type":"integer","title":"Unique Replies","description":"Leads whose reply fell in this category."},"total_replies":{"type":"integer","title":"Total Replies","description":"Replies in this category."}},"type":"object","required":["reply_category","unique_replies","total_replies"],"title":"ReplyCategoryMetricsPublicOutput"},"ReplyMessagePublicInput":{"properties":{"body":{"type":"string","title":"Body","description":"What to send to the lead."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"Overrides the subject on email. Leave empty to keep the thread's subject. Ignored on LinkedIn."},"invalidate_scheduled_steps":{"type":"boolean","title":"Invalidate Scheduled Steps","description":"Drop the sequence's remaining scheduled messages and reminders so this reply replaces them instead of racing them.","default":false}},"type":"object","required":["body"],"title":"ReplyMessagePublicInput"},"ReplyMessagePublicOutput":{"properties":{"sent_message_id":{"type":"string","format":"uuid","title":"Sent Message Id","description":"Unique identifier of the sent reply message."},"channel":{"$ref":"#/components/schemas/ChannelType","description":"Channel the reply was sent on."},"sequence_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sequence Id","description":"Sequence run the message belongs to."},"skipped_step_count":{"type":"integer","title":"Skipped Step Count","description":"Number of scheduled sequence steps skipped."},"cancelled_reminder_count":{"type":"integer","title":"Cancelled Reminder Count","description":"Number of scheduled reminders cancelled."}},"type":"object","required":["sent_message_id","channel","skipped_step_count","cancelled_reminder_count"],"title":"ReplyMessagePublicOutput"},"RunPlaybookPublicInput":{"properties":{"trigger_payload":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Trigger Payload","description":"Optional trigger context passed into the run."},"dry_run":{"type":"boolean","title":"Dry Run","description":"When true, execute without side effects where supported.","default":false}},"type":"object","title":"RunPlaybookPublicInput"},"RunPlaybookPublicOutput":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id","description":"Unique identifier of the started run."},"playbook_id":{"type":"string","format":"uuid","title":"Playbook Id","description":"Playbook that was run."},"workflow_id":{"type":"string","title":"Workflow Id","description":"Temporal workflow execution ID."},"status":{"$ref":"#/components/schemas/PlaybookRunStatus","description":"Initial status of the run."},"deduplicated":{"type":"boolean","title":"Deduplicated","description":"Whether this run deduplicated against an already active execution."}},"type":"object","required":["run_id","playbook_id","workflow_id","status","deduplicated"],"title":"RunPlaybookPublicOutput"},"SearchOutput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SearchResultOutput"},"type":"array","title":"Items","description":"Best matches per kind of record, capped per kind."}},"type":"object","required":["items"],"title":"SearchOutput"},"SearchResultOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Typed id of the match, in the form `<type>:<uuid>`. Pass it to `GET /v1/fetch`."},"type":{"type":"string","enum":["lead","account","sequence_template","task"],"title":"Type","description":"Kind of record matched."},"title":{"type":"string","title":"Title","description":"Display name of the record."},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle","description":"Secondary line describing the record, when there is one."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Deep link to the record in the Topo app, when it has a page."}},"type":"object","required":["id","type","title"],"title":"SearchResultOutput"},"SequenceCompletedMetadata":{"properties":{"lastStepExecuted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Laststepexecuted"}},"type":"object","title":"SequenceCompletedMetadata"},"SequenceCompletedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"sequence.completed","title":"Type","default":"sequence.completed"},"metadata":{"$ref":"#/components/schemas/SequenceCompletedMetadata","default":{}}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"SequenceCompletedPayload"},"SequenceCreatedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"sequence.created","title":"Type","default":"sequence.created"}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"SequenceCreatedPayload"},"SequenceErrorCode":{"type":"string","enum":["EMAIL_BOUNCED","CONTACT_UNSUBSCRIBED","STEP_FAILED","CASCADED_FAILURE","MANUALLY_STOPPED","SEQUENCE_EXPIRED","MISSING_CONTACT_DATA","UNKNOWN"],"title":"SequenceErrorCode","description":"Reason a sequence transitioned to FAILED. Drives the i18n banner."},"SequenceMetricChannel":{"type":"string","enum":["EMAIL","LINKEDIN","ALL","MANUAL"],"title":"SequenceMetricChannel"},"SequenceMetricsCountersPublicOutput":{"properties":{"unique_found":{"type":"integer","title":"Unique Found","description":"Leads found in the window."},"unique_sent":{"type":"integer","title":"Unique Sent","description":"Leads sent at least one message."},"total_sent":{"type":"integer","title":"Total Sent","description":"Messages sent."},"unique_opens":{"type":"integer","title":"Unique Opens","description":"Leads who opened at least once."},"total_opens":{"type":"integer","title":"Total Opens","description":"Opens recorded."},"unique_clicks":{"type":"integer","title":"Unique Clicks","description":"Leads who clicked at least once."},"total_clicks":{"type":"integer","title":"Total Clicks","description":"Clicks recorded."},"unique_replies":{"type":"integer","title":"Unique Replies","description":"Leads who replied at least once."},"total_replies":{"type":"integer","title":"Total Replies","description":"Replies received."},"unique_positive_replies":{"type":"integer","title":"Unique Positive Replies","description":"Leads who replied positively at least once."},"total_positive_replies":{"type":"integer","title":"Total Positive Replies","description":"Positive replies received."},"unique_hot_leads":{"type":"integer","title":"Unique Hot Leads","description":"Leads that turned hot."},"total_hot_leads":{"type":"integer","title":"Total Hot Leads","description":"Hot-lead events recorded."}},"type":"object","required":["unique_found","unique_sent","total_sent","unique_opens","total_opens","unique_clicks","total_clicks","unique_replies","total_replies","unique_positive_replies","total_positive_replies","unique_hot_leads","total_hot_leads"],"title":"SequenceMetricsCountersPublicOutput"},"SequenceMetricsPublicOutput":{"properties":{"start_date":{"type":"string","format":"date","title":"Start Date","description":"Inclusive first day of the reporting window."},"end_date":{"type":"string","format":"date","title":"End Date","description":"Inclusive last day of the reporting window."},"channel":{"$ref":"#/components/schemas/SequenceMetricChannel","description":"Channel the counters cover."},"sequences":{"items":{"$ref":"#/components/schemas/SequenceTemplateMetricsPublicOutput"},"type":"array","title":"Sequences","description":"Per-template counters, busiest first."},"reply_categories":{"items":{"$ref":"#/components/schemas/ReplyCategoryMetricsPublicOutput"},"type":"array","title":"Reply Categories","description":"Reply breakdown across the templates reported on."}},"type":"object","required":["start_date","end_date","channel","sequences","reply_categories"],"title":"SequenceMetricsPublicOutput"},"SequencePausedMetadata":{"properties":{"pausedUntil":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pauseduntil"},"lastStepExecuted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Laststepexecuted"}},"type":"object","title":"SequencePausedMetadata"},"SequencePausedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"sequence.paused","title":"Type","default":"sequence.paused"},"metadata":{"$ref":"#/components/schemas/SequencePausedMetadata","default":{}}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"SequencePausedPayload"},"SequencePublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"organization_id":{"type":"string","format":"uuid","title":"Organization Id","description":"Workspace this sequence belongs to."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact this sequence is targeting."},"contact":{"anyOf":[{"$ref":"#/components/schemas/PublicContactSummary"},{"type":"null"}],"description":"Summary of the contact this sequence is targeting."},"sequence_template_id":{"type":"string","format":"uuid","title":"Sequence Template Id","description":"Template the sequence was instantiated from."},"sequence_template":{"anyOf":[{"$ref":"#/components/schemas/PublicSequenceTemplateSummary"},{"type":"null"}],"description":"Summary of the template this sequence was instantiated from."},"status":{"$ref":"#/components/schemas/StatusSequence","description":"Current execution state."},"variables":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Variables","description":"Per-run template variables substituted into outbound messages."},"source_contact_list_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Contact List Id","description":"Contact list that triggered this sequence, if any."},"last_step_executed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Step Executed At","description":"When the most recent step ran."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the sequence was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the sequence last changed."}},"type":"object","required":["id","organization_id","contact_id","sequence_template_id","status","variables","source_contact_list_id","last_step_executed_at","created_at","updated_at"],"title":"SequencePublicOutput"},"SequenceResumedMetadata":{"properties":{"lastStepExecuted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Laststepexecuted"}},"type":"object","title":"SequenceResumedMetadata"},"SequenceResumedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"sequence.resumed","title":"Type","default":"sequence.resumed"},"metadata":{"$ref":"#/components/schemas/SequenceResumedMetadata","default":{}}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"SequenceResumedPayload"},"SequenceSortField":{"type":"string","enum":["created_at","updated_at","status"],"title":"SequenceSortField"},"SequenceStoppedMetadata":{"properties":{"errorCode":{"anyOf":[{"$ref":"#/components/schemas/SequenceErrorCode"},{"type":"null"}]},"stoppedReason":{"anyOf":[{"$ref":"#/components/schemas/SequenceStoppedReason"},{"type":"null"}]},"lastStepExecuted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Laststepexecuted"}},"type":"object","title":"SequenceStoppedMetadata"},"SequenceStoppedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"sequence.stopped","title":"Type","default":"sequence.stopped"},"metadata":{"$ref":"#/components/schemas/SequenceStoppedMetadata","default":{}}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"SequenceStoppedPayload"},"SequenceStoppedReason":{"type":"string","enum":["USER","SUPERSEDED","REMOVED_FROM_SOURCE_LIST","TEMPLATE_DELETED","LEAD_IMPORT_DELETED","SENDER_DELETED"],"title":"SequenceStoppedReason"},"SequenceTemplateMetricsPublicOutput":{"properties":{"sequence_template_id":{"type":"string","format":"uuid","title":"Sequence Template Id","description":"Template these counters belong to."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the template."},"status":{"$ref":"#/components/schemas/SequenceTemplateStatus","description":"Lifecycle state."},"metrics":{"$ref":"#/components/schemas/SequenceMetricsCountersPublicOutput","description":"Counters for the reporting window."}},"type":"object","required":["sequence_template_id","name","status","metrics"],"title":"SequenceTemplateMetricsPublicOutput"},"SequenceTemplatePublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the template."},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Short description of what the template is for."},"status":{"$ref":"#/components/schemas/SequenceTemplateStatus","description":"Lifecycle state."},"step_count":{"type":"integer","title":"Step Count","description":"Number of steps configured on the template."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"BCP-47 language tag the template was authored in."},"timezone":{"type":"string","title":"Timezone","description":"IANA timezone the template's send-window rules are evaluated in."},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At","description":"When the template was first activated."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the template was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the template last changed."}},"type":"object","required":["id","name","summary","status","step_count","language","timezone","activated_at","created_at","updated_at"],"title":"SequenceTemplatePublicOutput"},"SequenceTemplateSortField":{"type":"string","enum":["created_at","updated_at","name"],"title":"SequenceTemplateSortField"},"SequenceTemplateStatus":{"type":"string","enum":["PENDING_SETUP","ACTIVE","INACTIVE","FINISHING","ARCHIVED"],"title":"SequenceTemplateStatus"},"SetPlaybookStatusPublicOutput":{"properties":{"playbook_id":{"type":"string","format":"uuid","title":"Playbook Id","description":"Playbook whose status changed."},"previous_status":{"$ref":"#/components/schemas/PlaybookStatus","description":"Status before the transition."},"new_status":{"$ref":"#/components/schemas/PlaybookStatus","description":"Status after the transition."}},"type":"object","required":["playbook_id","previous_status","new_status"],"title":"SetPlaybookStatusPublicOutput"},"SignalDetailPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the signal."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the signal and of its destination list."},"signal_type":{"$ref":"#/components/schemas/SignalType","description":"Catalog preset the signal watches."},"status":{"$ref":"#/components/schemas/SignalRunStatus","description":"ACTIVE checks daily, PAUSED is held until resumed, ARCHIVED is retired and cannot be resumed."},"cadence":{"anyOf":[{"$ref":"#/components/schemas/RefillFrequency"},{"type":"null"}],"description":"How often the signal checks its provider."},"max_per_run":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Per Run","description":"Daily ceiling on imported entries, when one was set."},"max_companies_per_run":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Companies Per Run","description":"Daily ceiling on detected companies consumed, when one was set."},"max_contacts_per_company":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Contacts Per Company","description":"People imported per detected company, when one was set."},"max_per_day":{"type":"integer","title":"Max Per Day","description":"Ceiling on the entries the signal imports in one day, resolved from the caps above."},"enrich_email":{"type":"boolean","title":"Enrich Email","description":"Whether imported leads get their email enriched."},"enrich_phones":{"type":"boolean","title":"Enrich Phones","description":"Whether imported leads get their phone enriched."},"imported_count":{"type":"integer","title":"Imported Count","description":"Entries the signal has imported since it was created."},"contact_list_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact List Id","description":"Destination list, when the signal imports people."},"account_list_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account List Id","description":"Destination list, when the signal imports companies."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the signal was created."},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At","description":"When the signal was retired, if it was."},"search_filters":{"$ref":"#/components/schemas/FilterTexts","description":"Detection filters, keyed by the preset's own filter keys."},"import_search_filters":{"$ref":"#/components/schemas/FilterTexts","description":"Filters applied when a detected fact is turned into imported entries."},"sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sequence Template Id","description":"Sequence template the imported leads are enrolled into."},"import_target":{"$ref":"#/components/schemas/TargetEntity","description":"Whether the signal imports people or companies."},"event_subject":{"anyOf":[{"$ref":"#/components/schemas/TargetEntity"},{"type":"null"}],"description":"What a custom-event signal's own events identify. Null for every provider-backed preset."}},"type":"object","required":["id","name","signal_type","status","cadence","max_per_run","max_companies_per_run","max_contacts_per_company","max_per_day","enrich_email","enrich_phones","imported_count","contact_list_id","account_list_id","created_at","archived_at","search_filters","import_search_filters","sequence_template_id","import_target","event_subject"],"title":"SignalDetailPublicOutput"},"SignalImportKind":{"type":"string","enum":["CONTACT","ACCOUNT"],"title":"SignalImportKind"},"SignalImportPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the imported entry."},"signal_id":{"type":"string","format":"uuid","title":"Signal Id","description":"Signal that produced the entry."},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name","description":"Name of the signal that produced the entry."},"signal_type":{"$ref":"#/components/schemas/SignalType","description":"Catalog preset behind the signal."},"kind":{"$ref":"#/components/schemas/SignalImportKind","description":"Whether the entry is a person or a company."},"status":{"$ref":"#/components/schemas/SignalImportStatus","description":"FOUND is detected but not processed yet, IMPORTED landed in the destination list, ALREADY_IN_LIST was a duplicate, REJECTED was filtered out."},"skip_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skip Detail","description":"Why the entry was rejected, when it was."},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At","description":"When the underlying fact happened at the source."},"processed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Processed At","description":"When the signal decided what to do with the entry."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"The imported lead, once it exists in the workspace."},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id","description":"The imported account, once it exists in the workspace."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name of the person."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name of the person."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title of the person."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email of the person."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile of the person."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Company the person works at."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Domain of the company the person works at."},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name","description":"Name of the detected company."},"account_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Domain","description":"Domain of the detected company."}},"type":"object","required":["id","signal_id","signal_name","signal_type","kind","status","skip_detail","occurred_at","processed_at","contact_id","account_id","first_name","last_name","job_title","email","linkedin_url","company_name","company_domain","account_name","account_domain"],"title":"SignalImportPublicOutput"},"SignalImportStatus":{"type":"string","enum":["FOUND","IMPORTED","ALREADY_IN_LIST","EXPIRED","REJECTED"],"title":"SignalImportStatus","description":"Display status for a signal occurrence — collapses the DB-level\n`SignalStatus`/`SignalSkipReason` pair into the states the product\nsurfaces. ALREADY_IN_LIST and EXPIRED are kept out of REJECTED so\nneither an ordinary duplicate nor a fact that simply aged out reads as\na qualification failure."},"SignalName":{"type":"string","minLength":1},"SignalPresetPublicOutput":{"properties":{"signal_type":{"$ref":"#/components/schemas/SignalType","description":"Pass this as `signal_type` to create a signal from the preset."},"title":{"type":"string","title":"Title","description":"Display name of the preset."},"description":{"type":"string","title":"Description","description":"What the preset detects."},"category_label":{"type":"string","title":"Category Label","description":"Catalog category the preset belongs to."},"scope":{"$ref":"#/components/schemas/SignalScope","description":"What the preset's provider detects: COMPANY facts or PEOPLE. A COMPANY preset can still import the people behind its detected companies through `import_target`."},"scope_selectable_at_creation":{"type":"boolean","title":"Scope Selectable At Creation","description":"Whether `import_target` may pick either entity, instead of being fixed by the scope."},"filter_keys":{"items":{"$ref":"#/components/schemas/FilterFieldKey"},"type":"array","title":"Filter Keys","description":"Every detection filter the preset accepts."},"required_filter_keys":{"items":{"$ref":"#/components/schemas/FilterFieldKey"},"type":"array","title":"Required Filter Keys","description":"The detection filters the preset refuses to go without."},"requires_event_subject":{"type":"boolean","title":"Requires Event Subject","description":"Whether creation must declare `event_subject`, which only a custom-event preset does."}},"type":"object","required":["signal_type","title","description","category_label","scope","scope_selectable_at_creation","filter_keys","required_filter_keys","requires_event_subject"],"title":"SignalPresetPublicOutput"},"SignalPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier of the signal."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the signal and of its destination list."},"signal_type":{"$ref":"#/components/schemas/SignalType","description":"Catalog preset the signal watches."},"status":{"$ref":"#/components/schemas/SignalRunStatus","description":"ACTIVE checks daily, PAUSED is held until resumed, ARCHIVED is retired and cannot be resumed."},"cadence":{"anyOf":[{"$ref":"#/components/schemas/RefillFrequency"},{"type":"null"}],"description":"How often the signal checks its provider."},"max_per_run":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Per Run","description":"Daily ceiling on imported entries, when one was set."},"max_companies_per_run":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Companies Per Run","description":"Daily ceiling on detected companies consumed, when one was set."},"max_contacts_per_company":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Contacts Per Company","description":"People imported per detected company, when one was set."},"max_per_day":{"type":"integer","title":"Max Per Day","description":"Ceiling on the entries the signal imports in one day, resolved from the caps above."},"enrich_email":{"type":"boolean","title":"Enrich Email","description":"Whether imported leads get their email enriched."},"enrich_phones":{"type":"boolean","title":"Enrich Phones","description":"Whether imported leads get their phone enriched."},"imported_count":{"type":"integer","title":"Imported Count","description":"Entries the signal has imported since it was created."},"contact_list_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact List Id","description":"Destination list, when the signal imports people."},"account_list_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account List Id","description":"Destination list, when the signal imports companies."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the signal was created."},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At","description":"When the signal was retired, if it was."}},"type":"object","required":["id","name","signal_type","status","cadence","max_per_run","max_companies_per_run","max_contacts_per_company","max_per_day","enrich_email","enrich_phones","imported_count","contact_list_id","account_list_id","created_at","archived_at"],"title":"SignalPublicOutput"},"SignalRunStatus":{"type":"string","enum":["ACTIVE","PAUSED","ARCHIVED"],"title":"SignalRunStatus"},"SignalScope":{"type":"string","enum":["PEOPLE","COMPANY"],"title":"SignalScope"},"SignalType":{"type":"string","enum":["LINKEDIN_OWN_POST_ENGAGEMENT","LINKEDIN_COMPETITOR_POST_ENGAGEMENT","LINKEDIN_KEYWORD_MENTION","LINKEDIN_OWN_COMPANY_FOLLOWERS","LINKEDIN_COMPETITOR_FOLLOWERS","LINKEDIN_COMPANY_PAGE_FOLLOWERS","HIRING_SIGNALS","JOB_DESCRIPTION_KEYWORD","FUNDING_EVENTS","TECH_ADOPTION","NEWS_EVENTS","CUSTOM_EVENT"],"title":"SignalType"},"SortOrder":{"type":"string","enum":["asc","desc"],"title":"SortOrder"},"StatusSequence":{"type":"string","enum":["ACTIVE","SUCCEEDED","FAILED","COMPLETED","WAITING_FOR_LEAD","WAITING_FOR_USER","STOPPED_EARLY","FOUND","REFUSED"],"title":"StatusSequence"},"StopSequencePublicInput":{"properties":{"reason":{"$ref":"#/components/schemas/StopSequenceReason","description":"Why the sequence is being stopped."},"scope":{"$ref":"#/components/schemas/PublicStopSequenceScope","description":"Whether the stop applies to this sequence only or to all sequences for contacts of the same account."}},"type":"object","required":["reason","scope"],"title":"StopSequencePublicInput"},"StopSequenceReason":{"type":"string","enum":["WIN","LOSE"],"title":"StopSequenceReason"},"TargetEntity":{"type":"string","enum":["PEOPLE","COMPANIES"],"title":"TargetEntity"},"TaskCompletedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"task.completed","title":"Type","default":"task.completed"},"task":{"anyOf":[{"$ref":"#/components/schemas/WebhookTaskSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"TaskCompletedPayload"},"TaskCreatedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"task.created","title":"Type","default":"task.created"},"task":{"anyOf":[{"$ref":"#/components/schemas/WebhookTaskSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"TaskCreatedPayload"},"TaskExclusionScope":{"type":"string","enum":["CONTACT","ACCOUNT"],"title":"TaskExclusionScope"},"TaskExecutePublicInput":{"properties":{"payload":{"oneOf":[{"$ref":"#/components/schemas/EmailReplyPayload"},{"$ref":"#/components/schemas/LinkedinReplyPayload"},{"$ref":"#/components/schemas/NewLeadReviewPayload"},{"$ref":"#/components/schemas/CallPayload"},{"$ref":"#/components/schemas/PlaybookApprovalPayload"}],"title":"Payload","description":"Task-type-specific execution payload.","discriminator":{"propertyName":"type","mapping":{"call":"#/components/schemas/CallPayload","email_reply":"#/components/schemas/EmailReplyPayload","linkedin_reply":"#/components/schemas/LinkedinReplyPayload","new_lead_review":"#/components/schemas/NewLeadReviewPayload","playbook_approval":"#/components/schemas/PlaybookApprovalPayload"}}}},"additionalProperties":false,"type":"object","required":["payload"],"title":"TaskExecutePublicInput"},"TaskPriority":{"type":"string","enum":["HOT","TODAY","EXTRA"],"title":"TaskPriority"},"TaskPublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"organization_id":{"type":"string","format":"uuid","title":"Organization Id","description":"Workspace this task belongs to."},"type":{"$ref":"#/components/schemas/TaskType","description":"What kind of task this is."},"priority":{"$ref":"#/components/schemas/TaskPriority","description":"Task priority bucket."},"status":{"$ref":"#/components/schemas/TaskStatus","description":"Current lifecycle state."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Task title for standalone tasks."},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date","description":"Due date for standalone tasks."},"sequence_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sequence Id","description":"Sequence run this task was projected from, if any."},"contact":{"anyOf":[{"$ref":"#/components/schemas/PublicContactSummary"},{"type":"null"}],"description":"Summary of the contact linked to this task."},"assignee_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee User Id","description":"User the task is assigned to, if any."},"assignee":{"anyOf":[{"$ref":"#/components/schemas/PublicUserSummary"},{"type":"null"}],"description":"Summary of the user this task is assigned to."},"sequence_template":{"anyOf":[{"$ref":"#/components/schemas/PublicSequenceTemplateSummary"},{"type":"null"}],"description":"Summary of the sequence template for sequence-derived tasks."},"disposition":{"anyOf":[{"$ref":"#/components/schemas/CallDisposition"},{"type":"null"}],"description":"Outcome for call tasks once executed."},"reopened_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reopened At","description":"When the task was last reopened, if ever."},"reopen_reason":{"anyOf":[{"$ref":"#/components/schemas/TaskReopenReason"},{"type":"null"}],"description":"Why the task was reopened, if applicable."},"snoozed_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until","description":"When the task is snoozed until, if deferred."},"skipped_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Skipped At","description":"When the task was skipped, if applicable."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When the task was completed, if applicable."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the task was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the task last changed."}},"type":"object","required":["id","organization_id","type","priority","status","sequence_id","assignee_user_id","disposition","reopened_at","reopen_reason","skipped_at","completed_at","created_at","updated_at"],"title":"TaskPublicOutput"},"TaskReopenReason":{"type":"string","enum":["REMINDER_RULE"],"title":"TaskReopenReason"},"TaskReopenedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"task.reopened","title":"Type","default":"task.reopened"},"task":{"anyOf":[{"$ref":"#/components/schemas/WebhookTaskSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"TaskReopenedPayload"},"TaskSkippedPayload":{"properties":{"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"contactId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contactid"},"sequenceId":{"type":"string","format":"uuid","title":"Sequenceid"},"sequenceTemplateId":{"type":"string","format":"uuid","title":"Sequencetemplateid"},"resourceType":{"anyOf":[{"$ref":"#/components/schemas/ActivityResourceType"},{"type":"null"}]},"channel":{"anyOf":[{"$ref":"#/components/schemas/ActivityChannel"},{"type":"null"}]},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Messageid"},"hotLeadId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Hotleadid"},"calendarEventId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendareventid"},"taskId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Taskid"},"contact":{"anyOf":[{"$ref":"#/components/schemas/WebhookContactSummary"},{"type":"null"}]},"sequenceTemplate":{"anyOf":[{"$ref":"#/components/schemas/WebhookSequenceTemplateSummary"},{"type":"null"}]},"type":{"type":"string","const":"task.skipped","title":"Type","default":"task.skipped"},"task":{"anyOf":[{"$ref":"#/components/schemas/WebhookTaskSummary"},{"type":"null"}]}},"type":"object","required":["organizationId","contactId","sequenceId","sequenceTemplateId","resourceType","channel"],"title":"TaskSkippedPayload"},"TaskSnoozePublicInput":{"properties":{"snoozed_until":{"type":"string","format":"date-time","title":"Snoozed Until","description":"When the task should re-enter the active queue. Must be timezone-aware and in the future."}},"additionalProperties":false,"type":"object","required":["snoozed_until"],"title":"TaskSnoozePublicInput"},"TaskSnoozePublicOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Task identifier."},"snoozed_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until","description":"When the task is snoozed until."}},"type":"object","required":["id"],"title":"TaskSnoozePublicOutput"},"TaskSortField":{"type":"string","enum":["created_at","updated_at"],"title":"TaskSortField"},"TaskStatus":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","SKIPPED"],"title":"TaskStatus"},"TaskType":{"type":"string","enum":["EMAIL_REPLY","LINKEDIN_REPLY","NEW_LEAD_REVIEW","CALL","PLAYBOOK_APPROVAL","TODO"],"title":"TaskType"},"TestDeliveryOutput":{"properties":{"delivered":{"type":"boolean","title":"Delivered","description":"Whether the receiver accepted the test payload."},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Failure reason when `delivered` is `false`."}},"type":"object","required":["delivered","error"],"title":"TestDeliveryOutput"},"ThreadArchivePublicOutput":{"properties":{"thread_id":{"type":"string","title":"Thread Id","description":"The external thread identifier."},"archived":{"type":"boolean","title":"Archived","description":"Whether the thread is currently archived."}},"type":"object","required":["thread_id","archived"],"title":"ThreadArchivePublicOutput"},"ThreadDetailPublicOutput":{"properties":{"thread_id":{"type":"string","title":"Thread Id","description":"Unique thread identifier."},"subject":{"type":"string","title":"Subject","description":"Subject line of the conversation thread."},"channel":{"$ref":"#/components/schemas/ChannelType","description":"Communication channel (EMAIL or LINKEDIN)."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact associated with the thread."},"contact_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Name","description":"Name of the contact."},"sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sequence Template Id","description":"Sequence template associated with the thread."},"sequence_template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sequence Template Name","description":"Name of the sequence template."},"lead_status":{"anyOf":[{"$ref":"#/components/schemas/StatusSequence"},{"type":"null"}],"description":"Current status of the enrolled lead."},"total_message_count":{"type":"integer","title":"Total Message Count","description":"Total count of messages in the thread."},"messages":{"items":{"$ref":"#/components/schemas/ThreadMessagePublicOutput"},"type":"array","title":"Messages","description":"Most recent messages in the thread, oldest first.","default":[]}},"type":"object","required":["thread_id","subject","channel","total_message_count"],"title":"ThreadDetailPublicOutput"},"ThreadMessagePublicOutput":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id","description":"Unique message identifier."},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","description":"Sender name or email."},"direction":{"$ref":"#/components/schemas/MessageDirection","description":"Direction of the message (INBOUND or OUTBOUND)."},"sent_at":{"type":"string","format":"date-time","title":"Sent At","description":"When the message was sent."},"body":{"type":"string","title":"Body","description":"Body text of the message."},"reply_category":{"anyOf":[{"$ref":"#/components/schemas/MessageReplyCategory"},{"type":"null"}],"description":"Categorization of the reply."}},"type":"object","required":["message_id","direction","sent_at","body"],"title":"ThreadMessagePublicOutput"},"ThreadSummaryPublicOutput":{"properties":{"thread_id":{"type":"string","title":"Thread Id","description":"Unique thread identifier."},"channel":{"$ref":"#/components/schemas/ChannelType","description":"Communication channel (EMAIL or LINKEDIN)."},"snippet":{"type":"string","title":"Snippet","description":"Preview of the latest message in the thread."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact associated with the thread."},"contact_name":{"type":"string","title":"Contact Name","description":"Name of the contact."},"last_message_at":{"type":"string","format":"date-time","title":"Last Message At","description":"When the latest message was sent."},"last_message_direction":{"$ref":"#/components/schemas/MessageDirection","description":"Direction of the latest message (INBOUND or OUTBOUND)."},"unread":{"type":"boolean","title":"Unread","description":"Whether the thread contains unread messages."},"lead_status":{"$ref":"#/components/schemas/StatusSequence","description":"Current status of the enrolled lead."}},"type":"object","required":["thread_id","channel","snippet","contact_name","last_message_at","last_message_direction","unread","lead_status"],"title":"ThreadSummaryPublicOutput"},"UnenrollContactsPublicInput":{"properties":{"contact_ids":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1,"title":"Contact Ids","description":"Contacts to unenroll from every non-finished sequence."},"sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sequence Template Id","description":"Only stop sequences built from this template. Omit to stop every non-finished sequence."}},"additionalProperties":false,"type":"object","required":["contact_ids"],"title":"UnenrollContactsPublicInput"},"UnenrollContactsPublicOutput":{"properties":{"stopped_sequence_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Stopped Sequence Ids","description":"Sequences that were stopped."},"stopped_count":{"type":"integer","title":"Stopped Count","description":"How many sequences were stopped."}},"type":"object","required":["stopped_sequence_ids","stopped_count"],"title":"UnenrollContactsPublicOutput"},"UpdateAccountCrmPublicInput":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/CrmFieldWritePublicInput"},"type":"array","minItems":1,"title":"Fields","description":"CRM properties to write in one update. Existing properties not listed are kept."}},"type":"object","required":["fields"],"title":"UpdateAccountCrmPublicInput"},"UpdateAccountExclusionInput":{"properties":{"reason":{"anyOf":[{"$ref":"#/components/schemas/ExclusionReason"},{"type":"null"}],"description":"New exclusion reason."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"New operator note."},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until","description":"New expiration timestamp. Pass `null` to make the exclusion permanent."}},"type":"object","title":"UpdateAccountExclusionInput"},"UpdateAccountListInput":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"New name for the list."}},"additionalProperties":false,"type":"object","title":"UpdateAccountListInput"},"UpdateContactCrmPublicInput":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/CrmFieldWritePublicInput"},"type":"array","minItems":1,"title":"Fields","description":"CRM properties to write in one update. Existing properties not listed are kept."}},"type":"object","required":["fields"],"title":"UpdateContactCrmPublicInput"},"UpdateContactExclusionInput":{"properties":{"reason":{"anyOf":[{"$ref":"#/components/schemas/ExclusionReason"},{"type":"null"}],"description":"New exclusion reason."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"New operator note."},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until","description":"New expiration timestamp. Pass `null` to make the exclusion permanent."}},"type":"object","title":"UpdateContactExclusionInput"},"UpdateContactListInput":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"New name for the list."},"default_sequence_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Sequence Template Id","description":"New default sequence template. Pass `null` to clear."}},"additionalProperties":false,"type":"object","title":"UpdateContactListInput"},"UpdateCrmFieldPublicOutput":{"properties":{"object_type":{"type":"string","title":"Object Type","description":"The CRM object type updated (contact or account)."},"crm_type":{"type":"string","title":"Crm Type","description":"The connected CRM provider type."},"crm_properties":{"items":{"type":"string"},"type":"array","title":"Crm Properties","description":"List of CRM properties that were updated."},"crm_property":{"type":"string","title":"Crm Property","description":"Primary CRM property that was updated."},"external_id":{"type":"string","title":"External Id","description":"The external CRM record ID."}},"type":"object","required":["object_type","crm_type","crm_properties","crm_property","external_id"],"title":"UpdateCrmFieldPublicOutput"},"UpdateMessageCategoryPublicInput":{"properties":{"category":{"$ref":"#/components/schemas/MessageReplyCategory","description":"The reply category to apply."}},"type":"object","required":["category"],"title":"UpdateMessageCategoryPublicInput"},"UpdateSequencePublicInput":{"properties":{"variables":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Variables","description":"Per-run template variables to merge into the sequence."}},"type":"object","title":"UpdateSequencePublicInput"},"UpdateSignalPublicInput":{"properties":{"name":{"$ref":"#/components/schemas/SignalName","description":"New name for the signal and its destination list."}},"type":"object","required":["name"],"title":"UpdateSignalPublicInput"},"UpdateTodoTaskPublicInput":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Title","description":"Task title."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Optional notes."},"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id","description":"Contact to link the task to."},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date","description":"Due date."}},"additionalProperties":false,"type":"object","title":"UpdateTodoTaskPublicInput"},"UpdateWebhookSubscriptionInput":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name","description":"New name for the subscription."},"url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Url","description":"New delivery URL."},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"New description. Pass `null` to clear."},"event_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/OutboundWebhookEventType"},"type":"array","minItems":1},{"type":"null"}],"title":"Event Types","description":"New event-type filter."},"sequence_template_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1},{"type":"null"}],"title":"Sequence Template Ids","description":"New sequence-template scope. Pass `null` to receive events from all templates."},"status":{"anyOf":[{"$ref":"#/components/schemas/WebhookSubscriptionStatus"},{"type":"null"}],"description":"New lifecycle status."}},"additionalProperties":false,"type":"object","title":"UpdateWebhookSubscriptionInput"},"UpsertAccountPublicInput":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name. Only used when the account is created."},"domain":{"type":"string","minLength":1,"title":"Domain","description":"Primary company domain. The account is matched inside your organization on this domain."}},"additionalProperties":false,"type":"object","required":["domain"],"title":"UpsertAccountPublicInput"},"UpsertContactPublicInput":{"properties":{"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email. At least one of `email` or `linkedin_url` is required."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL. At least one of `email` or `linkedin_url` is required."},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title","description":"Job title."},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Employer name."},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Employer's primary domain. Required to link the contact to an account."}},"additionalProperties":false,"type":"object","title":"UpsertContactPublicInput"},"WebhookContactSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firstname"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"linkedinUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedinurl"},"jobTitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jobtitle"},"companyName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyname"},"companyDomain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companydomain"}},"type":"object","required":["id"],"title":"WebhookContactSummary"},"WebhookHotLeadSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"engagementScore":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Engagementscore"}},"type":"object","required":["id"],"title":"WebhookHotLeadSummary"},"WebhookMeetingSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"startTime":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starttime"},"endTime":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Endtime"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"meetingLink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meetinglink"}},"type":"object","required":["id"],"title":"WebhookMeetingSummary"},"WebhookMessageSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"channel":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}]},"direction":{"anyOf":[{"$ref":"#/components/schemas/MessageDirection"},{"type":"null"}]},"sentAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sentat"},"stepNumber":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stepnumber"}},"type":"object","required":["id"],"title":"WebhookMessageSummary"},"WebhookSequenceTemplateSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["id"],"title":"WebhookSequenceTemplateSummary"},"WebhookSubscriptionInput":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"Name of the subscription."},"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url","description":"Endpoint that will receive POST deliveries."},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"Free-form description."},"event_types":{"items":{"$ref":"#/components/schemas/OutboundWebhookEventType"},"type":"array","minItems":1,"title":"Event Types","description":"Event types this subscription should receive."},"sequence_template_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1},{"type":"null"}],"title":"Sequence Template Ids","description":"Restrict deliveries to events from these sequence templates."}},"additionalProperties":false,"type":"object","required":["name","url","event_types"],"title":"WebhookSubscriptionInput"},"WebhookSubscriptionOutput":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier."},"name":{"type":"string","title":"Name","description":"Name of the subscription."},"url":{"type":"string","title":"Url","description":"Delivery URL events are POSTed to."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Free-form description."},"event_types":{"items":{"$ref":"#/components/schemas/OutboundWebhookEventType"},"type":"array","title":"Event Types","description":"Event types this subscription receives."},"sequence_template_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Sequence Template Ids","description":"Sequence-template scope."},"status":{"$ref":"#/components/schemas/WebhookSubscriptionStatus","description":"Lifecycle status."},"secret_prefix":{"type":"string","title":"Secret Prefix","description":"Leading characters of the signing secret, safe to display."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the subscription was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the subscription last changed."}},"type":"object","required":["id","name","url","description","event_types","sequence_template_ids","status","secret_prefix","created_at","updated_at"],"title":"WebhookSubscriptionOutput"},"WebhookSubscriptionStatus":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED"],"title":"WebhookSubscriptionStatus"},"WebhookTaskSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type":{"anyOf":[{"$ref":"#/components/schemas/TaskType"},{"type":"null"}]},"priority":{"anyOf":[{"$ref":"#/components/schemas/TaskPriority"},{"type":"null"}]},"status":{"anyOf":[{"$ref":"#/components/schemas/TaskStatus"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"dueDate":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Duedate"}},"type":"object","required":["id"],"title":"WebhookTaskSummary"}},"securitySchemes":{"BearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"topo_live_<64hex>","description":"Bearer API key issued from Settings → Developers."}}},"tags":[{"name":"Authentication","description":"Every request to the Topo Public API is authenticated with a bearer API key.\n\n```http\nAuthorization: Bearer topo_live_4f8a9c2b...\n```\n\nRequests without a valid bearer token receive `401 Unauthorized`. After repeated failures with the same token, further attempts are short-circuited with `429 Too Many Requests` (`data.window_seconds: 60`) so a stale or malformed key cannot be retried in a tight loop.\n\n### Issuing keys\n\nAPI keys are issued from the dashboard under **Settings → Developers → API keys**. Each key is bound to a single organization — the workspace it was created in — and cannot be used to read or write data from any other organization.\n\nThe raw key is shown **once** at creation and never displayed again. If the raw key is lost, revoke it and issue a new one.\n\n### Scopes\n\nKeys carry a granular scope list of `resource:action` pairs. A request to an endpoint whose required scope is not on the key returns `403 Forbidden`.\n\nv1 ships with the following scopes:\n\n- `account_exclusions:read`, `account_exclusions:write`\n- `account_lists:read`, `account_lists:write`\n- `accounts:read`, `accounts:write`\n- `activities:read`\n- `contact_exclusions:read`, `contact_exclusions:write`\n- `contact_lists:read`, `contact_lists:write`\n- `contacts:read`, `contacts:write`\n- `crm:write`\n- `events:read`, `events:write`\n- `messages:read`\n- `sequences:read`, `sequences:write`\n- `signals:read`, `signals:write`\n- `tasks:read`, `tasks:write`\n- `users:read`\n- `webhooks:read`, `webhooks:write`\n\nEach endpoint's required scope is listed in its description.\n\n### Inspecting the current key\n\n`GET /v1/me` returns the principal behind the bearer token: the key id, its name, the organization id and name, the id of the user who issued the key (`null` when it was not issued by a person), the scope list, the key prefix, the last-used timestamp, and the creation date. Use it to confirm a key is wired up correctly before debugging endpoint-level errors."},{"name":"Rate limits","description":"Requests are rate-limited per organization across three concurrent windows. The budget is shared by every API key issued for the organization.\n\n| Window | Default limit |\n|---|---|\n| Per second | 10 requests |\n| Per minute | 60 requests |\n| Per day | 10,000 requests |\n\nA request is accepted only if it fits inside **all three** windows. Exceeding any one of them returns `429`.\n\n### Response headers\n\nEvery response carries the state of all three windows. Each window is suffixed with its name — `second`, `minute`, or `day`:\n\n```http\nX-RateLimit-Limit-second: 5\nX-RateLimit-Remaining-second: 2\nX-RateLimit-Reset-second: 1729435920\nX-RateLimit-Limit-minute: 60\nX-RateLimit-Remaining-minute: 13\nX-RateLimit-Reset-minute: 1729435932\nX-RateLimit-Limit-day: 1000\nX-RateLimit-Remaining-day: 842\nX-RateLimit-Reset-day: 1729519200\n```\n\n| Header | Meaning |\n|---|---|\n| `X-RateLimit-Limit-{window}` | Capacity of that window |\n| `X-RateLimit-Remaining-{window}` | Requests left in that window before the next `429` |\n| `X-RateLimit-Reset-{window}` | Unix timestamp (seconds) at which that window is fully refilled |\n\nEach window is a token bucket that refills continuously, so `X-RateLimit-Remaining-{window}` recovers gradually under steady traffic — it does not snap back at a fixed boundary.\n\n### When the limit is exceeded\n\nRequests over the budget return `429` with the standard error envelope and a `Retry-After` header. `data.window_seconds` identifies the tier that tripped (`1`, `60`, or `86400`):\n\n```http\nRetry-After: 3\n```\n\n```json\n{\n  \"status_code\": 429,\n  \"type\": \"RateLimitIssue\",\n  \"message\": \"Rate limit exceeded\",\n  \"data\": {\n    \"limit\": 60,\n    \"reset_at\": 1729435932,\n    \"window_seconds\": 60\n  },\n  \"request_id\": \"req_01HX7K...\"\n}\n```\n\n`Retry-After` is the number of seconds until the next request is allowed and is the recommended signal for backoff. `X-RateLimit-Reset` marks when the window is fully refilled, which is later than `Retry-After` whenever the bucket has more than one slot."},{"name":"Task lifecycle","description":"A task represents one action a rep is expected to take — reply to a message, review a new lead, make a call, or complete a standalone to-do. This guide covers the states a task moves through, and how the wording used in the Topo app maps onto the values returned by this API.\n\n### Statuses\n\n| `status` | Meaning |\n|---|---|\n| `PENDING` | Waiting for the rep. This is where a task starts. |\n| `IN_PROGRESS` | A call task the rep has started but not yet logged. |\n| `COMPLETED` | The rep acted on the task — a reply was sent, a lead approved or refused, a call logged. |\n| `SKIPPED` | The rep dismissed the task without acting on it. Shown as **Archived** in the app. |\n\n`PENDING` and `IN_PROGRESS` are the actionable states. `COMPLETED` and `SKIPPED` are terminal, but both can be reversed with `POST /v1/tasks/{task_id}/reopen`.\n\n### App wording vs. API wording\n\nThe Topo app calls the dismiss action **Archive**. On this API the same operation is called *skip*. They are the same thing — only the label differs:\n\n| In the Topo app | On this API |\n|---|---|\n| The **Archive** button | `POST /v1/tasks/{task_id}/skip` |\n| The **Archived** badge | `status: \"SKIPPED\"` |\n| \"Archived 2 hours ago\" | `skipped_at` |\n| — | webhook event `task.skipped` |\n\nThese names are part of the frozen `/v1` contract and will not change within this major version. If you are mapping API data back to what a user sees in the app, treat `SKIPPED` and `skipped_at` as \"archived\".\n\n### Ending a task\n\n| Action | Endpoint | Result |\n|---|---|---|\n| Act on it | `POST /v1/tasks/{task_id}/execute` | `COMPLETED` + `completed_at`, and the task's own side effects (message sent, lead enrolled or refused, call logged) |\n| Mark done without acting | `POST /v1/tasks/{task_id}/complete` | `COMPLETED` + `completed_at` |\n| Dismiss it (archive) | `POST /v1/tasks/{task_id}/skip` | `SKIPPED` + `skipped_at` |\n\n`execute` is the only one of the three that changes anything beyond the task itself. `complete` and `skip` record an outcome and nothing more.\n\nBoth terminal states emit a webhook if you are subscribed: `task.completed` and `task.skipped` respectively.\n\n### Reopening\n\n`POST /v1/tasks/{task_id}/reopen` returns a `COMPLETED` or `SKIPPED` task to `PENDING`. It clears `completed_at` and `skipped_at`, and sets `reopened_at`. A task that is already actionable cannot be reopened.\n\n`reopen_reason` distinguishes an automatic reopen from a manual one. `REMINDER_RULE` means Topo brought the task back on its own because a sent message went unanswered; `null` means a person reopened it.\n\n### Snoozing\n\nDeferring a task (\"Snooze\") does **not** change its status. The task stays `PENDING` and drops out of the active queue until the chosen time passes, then reappears on its own.\n\nUse `POST /v1/tasks/{task_id}/snooze` with `{ \"snoozed_until\": \"<ISO-8601 timestamp>\" }` to defer a task. The `snoozed_until` timestamp is also returned on task objects in `GET /v1/tasks` and `GET /v1/tasks/{task_id}`."},{"name":"me","description":"Identity of the API key in use: the workspace it belongs to and its scopes."},{"name":"search","description":"Find records by name across kinds and load any match back. A search result carries a typed id (`<type>:<uuid>`) that `GET /v1/fetch` resolves into the full record, so a name is enough to reach a lead, an account, a sequence template or a task without knowing which endpoint owns it."},{"name":"users","description":"List users in the authenticated organization."},{"name":"contacts","description":"Manage contact lists, list entries, and contact-level exclusions."},{"name":"accounts","description":"Manage account lists, list entries, and account-level exclusions."},{"name":"sequences","description":"Manage outbound sequences and inspect their execution state."},{"name":"sequence-templates","description":"Manage reusable sequence templates that seed new sequences."},{"name":"activities","description":"Read the immutable event log produced by outbound sequences (sent, opened, replied, meeting booked, etc.)."},{"name":"events","description":"Ingest first-party events (product usage, website activity, form submissions) and read them back to verify ingestion and resolution. Every well-formed event is accepted (HTTP 202) and stored. Subject correlation to contacts and accounts is asynchronous and best-effort. Replays with the same `external_event_id` or identical event content are deduplicated."},{"name":"signals","description":"Create and run buying signals: a signal watches one catalog preset (hiring, funding, technology adoption, news, LinkedIn activity, or your own first-party events), checks it daily, and imports the qualified people or companies into a destination list it creates. Read the imports feed to see what each signal brought in."},{"name":"webhooks","description":"Manage webhook subscriptions to receive outbound event notifications."},{"name":"tasks","description":"List and inspect tasks in the workspace."},{"name":"messages","description":"Read email and LinkedIn messages exchanged in outreach sequences."}],"servers":[{"url":"https://api.topo.io","description":"Production"}],"x-tagGroups":[{"name":"Guides","tags":["Authentication","Rate limits","Task lifecycle"]},{"name":"Reference","tags":["me","search","users","contacts","accounts","sequences","sequence-templates","activities","events","signals","webhooks","tasks","messages"]}],"security":[{"BearerApiKey":[]}]}