Return every record on route_name whose inbound text or answer contains q, one page at a time.
Across ALL the route’s threads.
The search spans every caller and address on the route, so it is admin-only, and each item
is the WHOLE record (the same shape the transcript serves an admin). q is REQUIRED and
non-blank. There is no per-route record index, so the search is a BOUNDED nested scan of
the route’s threads and their records; a page that spent its scan budget answers
truncated: true LOUDLY, never a silent cut.
Authorization is decided BEFORE the route is looked up, so a non-admin is refused the same
way whether the name routes or not. An unknown route is a loud 404 to an admin; a blank
q, a page/page_size below 1, or a page above the served maximum, is a 400.
Returns {"items", "total", "page", "page_size", "next_page", "truncated", "unreadable"},
where total is the matches the bounded scan found and unreadable counts the scanned
members whose row was gone or unparseable.
GET
/
api
/
conversations
/
{route_name}
/
messages
/
search
Search a conversation route's messages
curl --request GET \ --url https://api.example.com/api/conversations/{route_name}/messages/search \ --header 'x-api-key: <api-key>'
A page of a route's message-search matches (admin-only, so always full records).
unreadable counts the scanned members whose row was gone or unparseable, omitted from the results.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TAI42","description":"tai is an open-source runtime for MCP tools, agents, and workflows — the server that hosts tools, agents, extensions, connectors, hooks, and storage for the TAI42 ecosystem.","colors":{"primary":"#DC143C","light":"#F4718A","dark":"#A01030"},"logo":{"light":"https://mintcdn.com/tai42/8zNeABFQpXRG0k_n/logo/light.png?fit=max\u0026auto=format\u0026n=8zNeABFQpXRG0k_n\u0026q=85\u0026s=2140f77615492c689d62fcb3a5df2d31","dark":"https://mintcdn.com/tai42/8zNeABFQpXRG0k_n/logo/dark.png?fit=max\u0026auto=format\u0026n=8zNeABFQpXRG0k_n\u0026q=85\u0026s=22db5fbcb0ff42b44dd8057f0edbb842"},"favicon":{"light":"https://mintcdn.com/tai42/8zNeABFQpXRG0k_n/logo/icon.png?fit=max\u0026auto=format\u0026n=8zNeABFQpXRG0k_n\u0026q=85\u0026s=93b0ca22f7b4a2c0a6a18f49aedbfd73","dark":"https://mintcdn.com/tai42/6-OGKPd0gfVyDs4N/logo/icon-dark.png?fit=max\u0026auto=format\u0026n=6-OGKPd0gfVyDs4N\u0026q=85\u0026s=e1630da05506747fe41cf300761cf3cf"},"appearance":{"default":"light"},"navbar":{"links":[{"icon":"github","href":"https://github.com/tai42ai/tai42","label":"GitHub"}],"primary":{"type":"button","label":"Get started","href":"/getting-started/installation"}},"footer":{"socials":{"github":"https://github.com/tai42ai","website":"https://tai42.ai"},"links":[{"header":"Project","items":[{"label":"Contributing","href":"/contributing"}]}]},"search":{"prompt":"Search the TAI42 docs"},"seo":{"metatags":{"og:title":"TAI42 — the OS for AI tools","og:description":"An open-source runtime for MCP tools, agents, and workflows.","og:image":"/images/og-image.svg","og:type":"website","twitter:card":"summary_large_image","twitter:title":"TAI42 — the OS for AI tools","twitter:image":"/images/og-image.svg"},"indexing":"navigable"},"fonts":{"heading":{"family":"Geist"},"body":{"family":"Inter"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tai42","hasAudioNarration":false,"actualSubdomain":"tai42","customDomains":["docs.tai42.ai"],"gitSource":{"type":"github","owner":"tai42ai","repo":"tai-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"70c7974a-74c7-4ee5-8636-97a098b8bbe6","liveDeploymentHistoryId":"6aeca718754501e0c6b68d06","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeca718754501e0c6b68d06"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aecafc07e5e99a1eb7058ad","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"Reference","count":356},{"language":"default","tag":"HTTP API","count":260},{"language":"default","tag":"Docs","count":124},{"language":"default","tag":"CLI","count":46},{"language":"default","tag":"Python SDK","count":38},{"language":"default","tag":"Concepts","count":35},{"language":"default","tag":"access-control","count":35},{"language":"default","tag":"states","count":33},{"language":"default","tag":"Plugins","count":30},{"language":"default","tag":"conversations","count":22}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/conversations/search-a-conversation-routes-messages","slug":"/api-reference/conversations/search-a-conversation-routes-messages","pageMetadata":{"title":"Search a conversation route's messages","description":"Return every record on ``route_name`` whose inbound text or answer contains ``q``, one page at a time.\n\nAcross ALL the route's threads.\nThe search spans every caller and address on the route, so it is admin-only, and each item\nis the WHOLE record (the same shape the transcript serves an admin). ``q`` is REQUIRED and\nnon-blank. There is no per-route record index, so the search is a BOUNDED nested scan of\nthe route's threads and their records; a page that spent its scan budget answers\n``truncated: true`` LOUDLY, never a silent cut.\n\nAuthorization is decided BEFORE the route is looked up, so a non-admin is refused the same\nway whether the name routes or not. An unknown route is a loud 404 to an admin; a blank\n``q``, a ``page``/``page_size`` below 1, or a ``page`` above the served maximum, is a 400.\nReturns ``{\"items\", \"total\", \"page\", \"page_size\", \"next_page\", \"truncated\", \"unreadable\"}``,\nwhere ``total`` is the matches the bounded scan found and ``unreadable`` counts the scanned\nmembers whose row was gone or unparseable.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/messages/search","href":"/api-reference/conversations/search-a-conversation-routes-messages","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Return every record on \", _jsx(_components.code, {\n children: \"route_name\"\n }), \" whose inbound text or answer contains \", _jsx(_components.code, {\n children: \"q\"\n }), \", one page at a time.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Across ALL the route’s threads.\\nThe search spans every caller and address on the route, so it is admin-only, and each item\\nis the WHOLE record (the same shape the transcript serves an admin). \", _jsx(_components.code, {\n children: \"q\"\n }), \" is REQUIRED and\\nnon-blank. There is no per-route record index, so the search is a BOUNDED nested scan of\\nthe route’s threads and their records; a page that spent its scan budget answers\\n\", _jsx(_components.code, {\n children: \"truncated: true\"\n }), \" LOUDLY, never a silent cut.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Authorization is decided BEFORE the route is looked up, so a non-admin is refused the same\\nway whether the name routes or not. An unknown route is a loud 404 to an admin; a blank\\n\", _jsx(_components.code, {\n children: \"q\"\n }), \", a \", _jsx(_components.code, {\n children: \"page\"\n }), \"/\", _jsx(_components.code, {\n children: \"page_size\"\n }), \" below 1, or a \", _jsx(_components.code, {\n children: \"page\"\n }), \" above the served maximum, is a 400.\\nReturns \", _jsx(_components.code, {\n children: \"{\\\"items\\\", \\\"total\\\", \\\"page\\\", \\\"page_size\\\", \\\"next_page\\\", \\\"truncated\\\", \\\"unreadable\\\"}\"\n }), \",\\nwhere \", _jsx(_components.code, {\n children: \"total\"\n }), \" is the matches the bounded scan found and \", _jsx(_components.code, {\n children: \"unreadable\"\n }), \" counts the scanned\\nmembers whose row was gone or unparseable.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Search a conversation route's messages","description":"Return every record on ``route_name`` whose inbound text or answer contains ``q``, one page at a time.\n\nAcross ALL the route's threads.\nThe search spans every caller and address on the route, so it is admin-only, and each item\nis the WHOLE record (the same shape the transcript serves an admin). ``q`` is REQUIRED and\nnon-blank. There is no per-route record index, so the search is a BOUNDED nested scan of\nthe route's threads and their records; a page that spent its scan budget answers\n``truncated: true`` LOUDLY, never a silent cut.\n\nAuthorization is decided BEFORE the route is looked up, so a non-admin is refused the same\nway whether the name routes or not. An unknown route is a loud 404 to an admin; a blank\n``q``, a ``page``/``page_size`` below 1, or a ``page`` above the served maximum, is a 400.\nReturns ``{\"items\", \"total\", \"page\", \"page_size\", \"next_page\", \"truncated\", \"unreadable\"}``,\nwhere ``total`` is the matches the bounded scan found and ``unreadable`` counts the scanned\nmembers whose row was gone or unparseable.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/messages/search","href":"/api-reference/conversations/search-a-conversation-routes-messages","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Return every record on ``route_name`` whose inbound text or answer contains ``q``, one page at a time.\n\nAcross ALL the route's threads.\nThe search spans every caller and address on the route, so it is admin-only, and each item\nis the WHOLE record (the same shape the transcript serves an admin). ``q`` is REQUIRED and\nnon-blank. There is no per-route record index, so the search is a BOUNDED nested scan of\nthe route's threads and their records; a page that spent its scan budget answers\n``truncated: true`` LOUDLY, never a silent cut.\n\nAuthorization is decided BEFORE the route is looked up, so a non-admin is refused the same\nway whether the name routes or not. An unknown route is a loud 404 to an admin; a blank\n``q``, a ``page``/``page_size`` below 1, or a ``page`` above the served maximum, is a 400.\nReturns ``{\"items\", \"total\", \"page\", \"page_size\", \"next_page\", \"truncated\", \"unreadable\"}``,\nwhere ``total`` is the matches the bounded scan found and ``unreadable`` counts the scanned\nmembers whose row was gone or unparseable.","operationId":"get_api_conversations_route_name_messages_search","parameters":["d9d020b4-7d5f-4e6c-9e4c-cdd875530ddd","dfe68e46-c94d-4c03-a376-032111b05520","02280399-9ccc-490a-976c-2127c06d4fe8","73f07388-54fe-4b9f-b037-e76794422704"],"responses":{"200":"bdf40f1b-2ae7-47f1-991b-678c1ea8aa3f","400":"e88eb283-d7f8-4a51-b6fc-b00f2abee86f","401":"5f4bd07e-75f1-4d76-8619-51247bc9da0f","403":"ed959249-7ec6-4c80-9a12-4bfee1b067e7","404":"44244e13-f384-4e38-a212-48d193c6406c","501":"39f0af6d-05ad-4029-87e2-815f84129469"},"security":["c70ffa4c-530f-4ff4-8b77-678eb0b73d74"],"summary":"Search a conversation route's messages","tags":["conversations"],"method":"get","type":"path","servers":[],"path":"/api/conversations/{route_name}/messages/search","baseUrlOptions":[],"title":"Search a conversation route's messages","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d9d020b4-7d5f-4e6c-9e4c-cdd875530ddd":{"in":"path","name":"route_name","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"dfe68e46-c94d-4c03-a376-032111b05520":{"description":"1-based page number, newest activity first.","in":"query","name":"page","required":false,"schema":{"default":1,"maximum":1000000,"minimum":1,"title":"Page","type":"integer","isRequired":false,"description":"1-based page number, newest activity first.","uniqueKey":"","typeLabel":"integer"}},"02280399-9ccc-490a-976c-2127c06d4fe8":{"description":"Items per page. A larger value is capped to 200, never refused.","in":"query","name":"pageSize","required":false,"schema":{"default":50,"minimum":1,"title":"Pagesize","type":"integer","isRequired":false,"description":"Items per page. A larger value is capped to 200, never refused.","uniqueKey":"","typeLabel":"integer"}},"73f07388-54fe-4b9f-b037-e76794422704":{"description":"The text to search the route's records for.","in":"query","name":"q","required":true,"schema":{"minLength":1,"pattern":"\\S","title":"Q","type":"string","isRequired":true,"description":"The text to search the route's records for.","uniqueKey":"","typeLabel":"string"}}},"responses":{"bdf40f1b-2ae7-47f1-991b-678c1ea8aa3f":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"A page of a route's message-search matches (admin-only, so always full records).\n\n``unreadable`` counts the scanned members whose row was gone or unparseable, omitted from the results.","properties":{"items":{"items":{"description":"A conversation answer record as a read door serves it.\n\nAn admin read carries every\nfield; the caller-scoped read withholds the route-key's internal detail — ``channel``,\n``our_identity``, ``provider_message_id``, ``callback_url``, ``error``, ``attempts``, the\nper-part ``sends`` and all of ``ask`` but ``sensitive`` and of ``ask_reply`` but ``answer``\nare present only for an admin caller and are absent from the caller_view subset.","properties":{"client_address":{"maxLength":256,"minLength":1,"title":"Client Address","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].client_address","typeLabel":"string"},"created_at":{"title":"Created At","type":"number","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].created_at","typeLabel":"number"},"door":{"enum":["api","channel"],"title":"Door","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].door","typeLabel":"enum\u003cstring>"},"inbound_text":{"title":"Inbound Text","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_text","typeLabel":"string"},"message_id":{"minLength":1,"title":"Message Id","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].message_id","typeLabel":"string"},"origin":{"enum":["client","operator","send"],"title":"Origin","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].origin","typeLabel":"enum\u003cstring>"},"route_name":{"minLength":1,"title":"Route Name","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].route_name","typeLabel":"string"},"thread_id":{"minLength":1,"title":"Thread Id","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].thread_id","typeLabel":"string"},"updated_at":{"title":"Updated At","type":"number","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].updated_at","typeLabel":"number"},"answer":{"oneOf":[{"type":"string","title":"Answer","uniqueKey":"data.\\items.items.[INDEX].answer.oneOf.0","typeLabel":"string"},{"type":"null","title":"Answer","uniqueKey":"data.\\items.items.[INDEX].answer.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer","typeLabel":"string | null"},"answer_parts":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"description":"One message of an ordered multi-message answer — the platform's rich part shape.\n\nIt mirrors :class:`ChannelNotification`'s CONTENT surface exactly (``message`` plus the\noptional ``media`` / ``location`` / ``template`` / ``options`` / ``sections`` / ``header``\n/ ``footer`` / ``schema`` richer-send forms and their validators), MINUS the per-delivery\nrouting fields (``recipient`` / ``sender_identity``) — those stay on the single delivery,\nnever per part. The delivery machine sends each part as its own ``ChannelNotification``,\nin order, chunking the ``message`` text at the channel width and carrying the part's\nricher forms alongside it, exactly as a single notification does today. Every\ncross-field rule (content-only blank message, ``options`` XOR ``sections``, ``schema``\nexcludes both, ``header``/``footer`` require a choice surface, ``template`` standalone) is\nthe SHARED :func:`~tai42_contract.channels.check_interactive_composition`, so an authored\npart and a delivered notification can never diverge.\n\nA part is a NEW authoring surface, so it is STRICT FROM BIRTH: unknown keys are refused\n(``extra=\"forbid\"``) rather than silently dropped. A tool route authors parts as a JSON\narray whose elements are each EITHER a plain string (shorthand for a text-only part) or a\npart object — both normalize to THIS one model. Frozen.\n\n``message`` mirrors :class:`ChannelNotification.message`'s blank-vs-media RULE: non-blank BY\nDEFAULT, EXCEPT it may be blank for a MEDIA-ONLY part — a caption-less image with no text\ncarrier. The admissible states are \"``message`` non-blank\" OR \"blank ``message`` WITH non-empty\n``media``\"; a blank ``message`` and no media has nothing to deliver and is refused. ``options``\nREQUIRE a non-blank ``message`` (a tappable choice needs a prompt), and a ``template`` rides a\nnon-blank ``message`` too — so a media-only part carries only ``media``. Unlike\n``ChannelNotification`` (always constructed in code), a part is authored as JSON where the\n``message`` key may be ABSENT, so it defaults to ``\"\"`` — a media-only part is just ``{\"media\": …}``.","properties":{"data":{"oneOf":[{"type":"object","title":"FormData","description":"Per-send data layered over a form's published schema for ONE send.\n\n``values`` prefills top-level properties — each entry keyed by property name,\nits value shown filled in and validated against that property's schema.\n``options`` supplies a per-send choice list for a property whose schema is a\nstring (or an array of strings), keyed by property name: the list REPLACES that\nproperty's ``enum`` for this send only (labels shown, values submitted). The\nmodel holds only the shape; the cross-check against the schema (unknown\nproperty, a value that fails its schema, options on a non-string property, an\nempty list) is done once by the interaction request. Frozen.","properties":{"options":{"additionalProperties":{"items":{"additionalProperties":false,"description":"One per-send choice for a form field. Frozen.\n\n``value`` is the string submitted as the answer, ``label`` (when set) is shown\nto the human in its place, and ``description`` (when set) is an OPTIONAL secondary\nline shown under ``label`` — a surface keeps a short label and moves the rest (a\ntime, a price) onto the second line. A per-send option list REPLACES a property's\nschema ``enum`` for ONE send — the published form is unchanged, so a variant needs\nno re-publish. The ``description`` carries content, so a surface whose control has\nno native second-line affordance draws it by that surface's own documented rule —\nnever silently drops it; a per-medium length cap is each channel's own.","properties":{"value":{"title":"Value","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].value","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].description","typeLabel":"string | null"},"label":{"oneOf":[{"type":"string","title":"Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX].label","typeLabel":"string | null"}},"required":["value"],"title":"FormOption","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties.items.[INDEX]","typeLabel":"FormOption · object"},"type":"array","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options.additionalProperties","typeLabel":"FormOption · object[]"},"default":{},"title":"Options","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.options","typeLabel":"Options · object"},"values":{"additionalProperties":true,"default":{},"title":"Values","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0.values","typeLabel":"Values · object"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.0","typeLabel":"FormData · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].data","typeLabel":"FormData · object | null"},"footer":{"oneOf":[{"type":"string","title":"Footer","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].footer.oneOf.0","typeLabel":"string"},{"type":"null","title":"Footer","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].footer.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].footer","typeLabel":"string | null"},"form_tag":{"oneOf":[{"type":"string","title":"Form Tag","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].form_tag.oneOf.0","typeLabel":"string"},{"type":"null","title":"Form Tag","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].form_tag.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].form_tag","typeLabel":"string | null"},"header":{"oneOf":[{"type":"object","title":"MediaItem","description":"One media item shown WITH a message — a display element, and inbound a participant's sent media.\n\n``kind`` selects how it renders: an ``image`` inline, a ``document``/``video``/``audio`` as\nthe matching file bubble, a ``link`` as a labelled anchor. ``url`` is the source. A file\nkind (``image``/``document``/``video``/``audio``) must be an absolute ``https`` URL, a\nsame-origin ``{MEDIA_ROUTE_PREFIX}{id}`` reference to media the skeleton serves by id, or an\nabsolute ``http(s)`` served reference of that same ``{MEDIA_ROUTE_PREFIX}{id}`` path a\nchannel send mints from ``public_base_url`` (remote file media is https-only: the inbox CSP\n``img-src`` admits ``https:``/``data:`` and same-origin but not ``http:``, so an ``http:``\nremote source would be an unrenderable record); ``image`` ADDITIONALLY admits an inline\n``data:image/*`` URI — that inline form is image-only, a ``data:`` URI on any other file\nkind is refused. A ``link`` must be an absolute ``http(s)`` URL (anchors are not governed by\n``img-src``; the human clicks through). A remote url names a host directly — an ASCII DNS\nname, dotted-quad IPv4, or bracketed IPv6 (IDN callers supply punycode); an embedded\n``user@`` credential form is rejected as it spoofs the authority — and is always a single\nline — raw whitespace and control/format characters are rejected. ``caption`` is the\naccessibility text — the image's alt text, a file's label, or the link's display label.\n``filename`` is the document's suggested display name; it is meaningful ONLY for a\n``document`` item and is refused on every other kind.","required":["kind","url"],"properties":{"kind":{"description":"How a media item renders: an inline image, a file bubble, or a labelled link.","enum":["image","link","document","video","audio"],"title":"MediaKind","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"url":{"title":"Url","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.url","typeLabel":"string"},"caption":{"oneOf":[{"type":"string","title":"Caption","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.caption.oneOf.0","typeLabel":"string"},{"type":"null","title":"Caption","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.caption.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.caption","typeLabel":"string | null"},"filename":{"oneOf":[{"type":"string","title":"Filename","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.filename.oneOf.0","typeLabel":"string"},{"type":"null","title":"Filename","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.filename.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0.filename","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.0","typeLabel":"MediaItem · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].header","typeLabel":"MediaItem · object | null"},"location":{"oneOf":[{"type":"object","title":"LocationElement","description":"A geographic point shared on a message — the one shape used BOTH ways.\n\nIt is an outbound place the sender shares and the inbound location a participant sent.\n``latitude``/``longitude`` are WGS84 decimal degrees, bounded to their valid ranges\n(latitude -90..90, longitude -180..180). ``name`` is an optional place label and ``address``\nan optional street address, each a single-line non-blank string within its cap when present\n(raw whitespace and control/format characters are rejected, as on a media url — an embedded\nnewline or bidi spoof would corrupt the rendered pin label). A channel that cannot render a\nmap renders the coordinates (and any name/address) as text. Frozen.","required":["latitude","longitude"],"properties":{"latitude":{"title":"Latitude","type":"number","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.latitude","typeLabel":"number"},"longitude":{"title":"Longitude","type":"number","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.longitude","typeLabel":"number"},"address":{"oneOf":[{"type":"string","title":"Address","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.address.oneOf.0","typeLabel":"string"},{"type":"null","title":"Address","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.address.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.address","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"LocationElement · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].location","typeLabel":"LocationElement · object | null"},"media":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"description":"One media item shown WITH a message — a display element, and inbound a participant's sent media.\n\n``kind`` selects how it renders: an ``image`` inline, a ``document``/``video``/``audio`` as\nthe matching file bubble, a ``link`` as a labelled anchor. ``url`` is the source. A file\nkind (``image``/``document``/``video``/``audio``) must be an absolute ``https`` URL, a\nsame-origin ``{MEDIA_ROUTE_PREFIX}{id}`` reference to media the skeleton serves by id, or an\nabsolute ``http(s)`` served reference of that same ``{MEDIA_ROUTE_PREFIX}{id}`` path a\nchannel send mints from ``public_base_url`` (remote file media is https-only: the inbox CSP\n``img-src`` admits ``https:``/``data:`` and same-origin but not ``http:``, so an ``http:``\nremote source would be an unrenderable record); ``image`` ADDITIONALLY admits an inline\n``data:image/*`` URI — that inline form is image-only, a ``data:`` URI on any other file\nkind is refused. A ``link`` must be an absolute ``http(s)`` URL (anchors are not governed by\n``img-src``; the human clicks through). A remote url names a host directly — an ASCII DNS\nname, dotted-quad IPv4, or bracketed IPv6 (IDN callers supply punycode); an embedded\n``user@`` credential form is rejected as it spoofs the authority — and is always a single\nline — raw whitespace and control/format characters are rejected. ``caption`` is the\naccessibility text — the image's alt text, a file's label, or the link's display label.\n``filename`` is the document's suggested display name; it is meaningful ONLY for a\n``document`` item and is refused on every other kind.","properties":{"kind":{"description":"How a media item renders: an inline image, a file bubble, or a labelled link.","enum":["image","link","document","video","audio"],"title":"MediaKind","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"url":{"title":"Url","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].url","typeLabel":"string"},"caption":{"oneOf":[{"type":"string","title":"Caption","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].caption.oneOf.0","typeLabel":"string"},{"type":"null","title":"Caption","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].caption.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].caption","typeLabel":"string | null"},"filename":{"oneOf":[{"type":"string","title":"Filename","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].filename.oneOf.0","typeLabel":"string"},{"type":"null","title":"Filename","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].filename.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX].filename","typeLabel":"string | null"}},"required":["kind","url"],"title":"MediaItem","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0.items.[INDEX]","typeLabel":"MediaItem · object"},"title":"Media","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.0","typeLabel":"MediaItem · object[]"},{"type":"null","title":"Media","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].media","typeLabel":"MediaItem · object[] | null"},"message":{"default":"","title":"Message","type":"string","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].message","typeLabel":"string"},"options":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","title":"ReplyOption","description":"A tappable suggested reply.\n\nTapping SUBMITS ``text`` as the participant's next inbound message —\nthe quick-reply / list-row case, where the option's own text becomes the turn. ``description``\nis an OPTIONAL secondary line a sectioned-list row renders under its ``text``; a channel that\nrenders flat buttons (no descriptions) ignores it.\n\n``id`` is an OPTIONAL author-set stable identifier for the button/list row. When set, a channel\nsends it verbatim on the wire and the participant's tap echoes it back (a channel surfaces the echoed\nid to the inbound turn as opaque enrichment — e.g. Slack forwards it as ``params.reply_id``);\nwhen ``None`` the channel mints its own id. Bounded by the platform abuse bound\n``OPTION_ID_MAX_CHARS`` and a single-line non-blank label; a channel with a tighter id cap\nenforces it in its own code. Frozen.","required":["text"],"properties":{"text":{"title":"Text","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.text","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string | null"},"id":{"oneOf":[{"type":"string","title":"Id","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Id","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.id","typeLabel":"string | null"},"kind":{"const":"reply","default":"reply","title":"Kind","type":"string","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0.kind","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"ReplyOption · object"},{"type":"object","title":"LinkOption","description":"A tappable link action.\n\nTapping OPENS ``url`` (an absolute ``http(s)`` URL) in the human's\nbrowser — NO message is submitted, distinct from a :class:`ReplyOption`. ``label`` is the\nbutton text. The URL-button / call-to-action case. Frozen.","required":["label","url"],"properties":{"label":{"title":"Label","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.1.label","typeLabel":"string"},"url":{"title":"Url","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.1.url","typeLabel":"string"},"kind":{"const":"link","default":"link","title":"Kind","type":"string","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.1.kind","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"LinkOption · object"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0.items.[INDEX]","typeLabel":"ReplyOption · object | LinkOption · object"},"title":"Options","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.0","typeLabel":"(ReplyOption · object | LinkOption · object)[]"},{"type":"null","title":"Options","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].options","typeLabel":"(ReplyOption · object | LinkOption · object)[] | null"},"pages":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"description":"One step of a stepped form. Frozen.\n\n``title`` heads the step. ``fields`` names the top-level properties collected on an\nINPUT page (``kind == \"input\"``, the default); a REVIEW page (``kind == \"review\"``)\ncarries NO input fields (a terminal/summary step) and so has an empty ``fields``.\n``display`` is the ordered list of :class:`DisplayBlock` shown on the page. Across a\nform's ``pages`` every property appears exactly once on the INPUT pages (the\ninteraction request enforces the coverage); absent ``pages`` means one page.\n\n``button_label`` is the text of the page's primary button — the one that advances from\nan input page or submits from the last — in the sender's own words and the end-user's\nlanguage; absent, the surface shows its own generic word. A page's primary button is\nlabelled HERE, on the page; the texts that are not a page's — the one that opens the form,\nthe one that cancels it, and every other platform-drawn word of the send — are the wording\ncatalogue's (``wording.form`` and its sibling chapters). The platform's word is the default\non every one of them.","properties":{"fields":{"items":{"type":"string","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].fields.items.[INDEX]","typeLabel":"string"},"title":"Fields","type":"array","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].fields","typeLabel":"string[]"},"title":{"title":"Title","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].title","typeLabel":"string"},"button_label":{"oneOf":[{"type":"string","title":"Button Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].button_label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Button Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].button_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].button_label","typeLabel":"string | null"},"display":{"default":[],"items":{"additionalProperties":false,"description":"One ordered display element shown on a form page beside its input fields. Frozen.\n\n``kind`` chooses the element: ``heading`` and ``body`` carry ``text``; ``image``\ncarries a ``src`` (its reference) and an optional ``alt`` (the text a surface that\ncannot draw the image shows instead). A block is either STATIC — its ``text``/``src``\nis given here — or declares a ``slot``: a name a form reaction's ``display`` update\nfills while the form is open (a computed total is a display slot). A static block\nrequires its content; a slotted block may omit it (the reaction supplies it). A\nblock carries only the content its ``kind`` allows (no ``src``/``alt`` on text, no\n``text`` on an image). Raises ``ValueError`` on any ill-formed combination.","properties":{"kind":{"enum":["heading","body","image"],"title":"Kind","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"alt":{"oneOf":[{"type":"string","title":"Alt","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].alt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Alt","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].alt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].alt","typeLabel":"string | null"},"slot":{"oneOf":[{"type":"string","title":"Slot","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].slot.oneOf.0","typeLabel":"string"},{"type":"null","title":"Slot","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].slot.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].slot","typeLabel":"string | null"},"src":{"oneOf":[{"type":"string","title":"Src","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].src.oneOf.0","typeLabel":"string"},{"type":"null","title":"Src","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].src.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].src","typeLabel":"string | null"},"text":{"oneOf":[{"type":"string","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX].text","typeLabel":"string | null"}},"required":["kind"],"title":"DisplayBlock","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display.items.[INDEX]","typeLabel":"DisplayBlock · object"},"title":"Display","type":"array","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].display","typeLabel":"DisplayBlock · object[]"},"kind":{"default":"input","enum":["input","review"],"title":"Kind","type":"string","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["title","fields"],"title":"FormPage","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0.items.[INDEX]","typeLabel":"FormPage · object"},"title":"Pages","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.0","typeLabel":"FormPage · object[]"},{"type":"null","title":"Pages","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].pages","typeLabel":"FormPage · object[] | null"},"schema":{"oneOf":[{"type":"object","title":"Schema","additionalProperties":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].schema.oneOf.0","typeLabel":"Schema · object"},{"type":"null","title":"Schema","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].schema.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].schema","typeLabel":"Schema · object | null"},"sections":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"description":"One titled section of a sectioned option list.\n\n``title`` is the section header; ``rows`` are\nits entries — a sectioned list holds :class:`ReplyOption` rows ONLY (a tapped row submits its\ntext; a link action is a button, never a list row). A present ``rows`` is non-empty. Frozen.","properties":{"rows":{"items":{"additionalProperties":false,"description":"A tappable suggested reply.\n\nTapping SUBMITS ``text`` as the participant's next inbound message —\nthe quick-reply / list-row case, where the option's own text becomes the turn. ``description``\nis an OPTIONAL secondary line a sectioned-list row renders under its ``text``; a channel that\nrenders flat buttons (no descriptions) ignores it.\n\n``id`` is an OPTIONAL author-set stable identifier for the button/list row. When set, a channel\nsends it verbatim on the wire and the participant's tap echoes it back (a channel surfaces the echoed\nid to the inbound turn as opaque enrichment — e.g. Slack forwards it as ``params.reply_id``);\nwhen ``None`` the channel mints its own id. Bounded by the platform abuse bound\n``OPTION_ID_MAX_CHARS`` and a single-line non-blank label; a channel with a tighter id cap\nenforces it in its own code. Frozen.","properties":{"text":{"title":"Text","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].text","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].description","typeLabel":"string | null"},"id":{"oneOf":[{"type":"string","title":"Id","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Id","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].id","typeLabel":"string | null"},"kind":{"const":"reply","default":"reply","title":"Kind","type":"string","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX].kind","typeLabel":"string"}},"required":["text"],"title":"ReplyOption","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows.items.[INDEX]","typeLabel":"ReplyOption · object"},"title":"Rows","type":"array","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].rows","typeLabel":"ReplyOption · object[]"},"title":{"title":"Title","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX].title","typeLabel":"string"}},"required":["title","rows"],"title":"OptionSection","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0.items.[INDEX]","typeLabel":"OptionSection · object"},"title":"Sections","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.0","typeLabel":"OptionSection · object[]"},{"type":"null","title":"Sections","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].sections","typeLabel":"OptionSection · object[] | null"},"template":{"oneOf":[{"type":"object","title":"ChannelTemplate","description":"A pre-approved, named template a channel sends outside its freeform window.\n\nSome media only accept arbitrary text inside a bounded conversation window (a provider's\ncustomer-service window); outside it, the sole accepted send is an operator-authored,\npre-approved template referenced by ``name`` in an approved ``language`` locale — both\nrequired and non-blank.\n\n``parameters`` is the template's runtime arguments as an OPAQUE object: the platform\nthreads it UNOPENED (never looking inside it), and the channel that declares the\n``supports_template_notifications`` capability owns its shape — it validates ``parameters``\nagainst its OWN template-parameter schema through its OPTIONAL ``validate_template`` hook\n(see :class:`~tai42_contract.channels.Channel`) and maps it to its own send API in its own\ncode. A template with no runtime arguments carries no ``parameters``; a present\n``parameters`` is a non-empty dict.","required":["name","language"],"properties":{"language":{"title":"Language","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.0.language","typeLabel":"string"},"name":{"title":"Name","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.0.name","typeLabel":"string"},"parameters":{"oneOf":[{"type":"object","title":"Parameters","additionalProperties":true,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.0.parameters.oneOf.0","typeLabel":"Parameters · object"},{"type":"null","title":"Parameters","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.0.parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.0.parameters","typeLabel":"Parameters · object | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.0","typeLabel":"ChannelTemplate · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].template","typeLabel":"ChannelTemplate · object | null"},"wording":{"oneOf":[{"type":"object","title":"Wording","description":"The one catalogue of a send's platform-drawn texts, for ONE send. Frozen, strict keys.\n\nEvery platform-drawn text of a question or a notification — a button, a heading, an input hint,\na line of the message, a sentence of an answer page, a screen-reader label, the sentence that\ntells the end user their answer was refused, a settled card's badge — carries the caller's\nwords, the platform's word as the default. ``wording`` is the catalogue of those words for ONE\nsend, in the end-user's language, grouped by what each word decorates: the form (``form``), the\nchoice list (``choice``), a question's answer controls and refusal sentences (``answer``), the\nlines of the delivery message (``lines``), the pages a question's link opens (``answer_page``),\nand in-flight and settled status (``status``). A page's primary button is the one text not here:\nit is on the page (``pages[].button_label``). Each member is drawn where a surface has that\ncontrol or sentence and is admitted only on a send that draws it (:data:`ADMISSION`); a surface\nwith no such control draws nothing for it. A set value is non-blank; an empty chapter names\nnothing and is refused; an unknown key is refused.","properties":{"answer":{"oneOf":[{"type":"object","title":"AnswerWording","description":"The caller's words for a non-form question's answer controls and refusal sentences. Frozen, strict keys.\n\n``open`` labels the control that opens the question's answer page; ``confirm`` labels its\naffirmative control; ``decline`` labels its negative control; ``submit`` labels the button that\nsends a typed or picked answer; ``reply_hint`` is the hint shown in an empty reply input.\n``rejected`` is the sentence drawn when an answer is refused and may be given again; its\nOPTIONAL ``{reason}`` token takes the door's reason by a plain substitution and is empty when\nthe door gave no reason it may show. ``rejected_final`` is the sentence drawn when a refused\nanswer also closes the question; it too takes an OPTIONAL ``{reason}``. Each is the sender's own\nwords, in the end-user's language; absent, the surface shows its own generic word. A set value\nis non-blank; ``rejected`` / ``rejected_final`` are bounded by\n:data:`REJECTION_NOTICE_MAX_CHARS`; an empty object names nothing and is refused; an unknown key\nis refused.","properties":{"confirm":{"oneOf":[{"type":"string","title":"Confirm","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.confirm.oneOf.0","typeLabel":"string"},{"type":"null","title":"Confirm","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.confirm.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.confirm","typeLabel":"string | null"},"decline":{"oneOf":[{"type":"string","title":"Decline","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.decline.oneOf.0","typeLabel":"string"},{"type":"null","title":"Decline","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.decline.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.decline","typeLabel":"string | null"},"open":{"oneOf":[{"type":"string","title":"Open","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.open.oneOf.0","typeLabel":"string"},{"type":"null","title":"Open","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.open.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.open","typeLabel":"string | null"},"rejected":{"oneOf":[{"type":"string","title":"Rejected","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.rejected.oneOf.0","typeLabel":"string"},{"type":"null","title":"Rejected","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.rejected.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.rejected","typeLabel":"string | null"},"rejected_final":{"oneOf":[{"type":"string","title":"Rejected Final","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.rejected_final.oneOf.0","typeLabel":"string"},{"type":"null","title":"Rejected Final","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.rejected_final.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.rejected_final","typeLabel":"string | null"},"reply_hint":{"oneOf":[{"type":"string","title":"Reply Hint","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.reply_hint.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reply Hint","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.reply_hint.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.reply_hint","typeLabel":"string | null"},"submit":{"oneOf":[{"type":"string","title":"Submit","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.submit.oneOf.0","typeLabel":"string"},{"type":"null","title":"Submit","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.submit.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0.submit","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.0","typeLabel":"AnswerWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer","typeLabel":"AnswerWording · object | null"},"answer_page":{"oneOf":[{"type":"object","title":"AnswerPageWording","description":"The caller's words for the pages a question's link opens, for ONE send. Frozen, strict keys.\n\n``confirm`` is the confirm page's copy; ``done`` the already-answered page's; ``awaiting`` the\nreply-on-the-channel page's; ``submitted`` the form page's post-submit copy; ``form`` carries the\nform page's own validation/error sentences. Each is drawn where a surface has that page or\nsentence. An empty object names nothing and is refused; an unknown key is refused.","properties":{"awaiting":{"oneOf":[{"type":"object","title":"PageCopy","description":"The heading and sentence of one platform-drawn answer page. Frozen, strict keys.\n\n``heading`` is the page's ``\u003ctitle>`` and ``\u003ch1>``; ``text`` is its one sentence. Each is\nthe sender's own words, in the end-user's language; absent, the page shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key\nis refused.","properties":{"heading":{"oneOf":[{"type":"string","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0.heading.oneOf.0","typeLabel":"string"},{"type":"null","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0.heading.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0.heading","typeLabel":"string | null"},"text":{"oneOf":[{"type":"string","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0.text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0.text","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.0","typeLabel":"PageCopy · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.awaiting","typeLabel":"PageCopy · object | null"},"confirm":{"oneOf":[{"type":"object","title":"PageCopy","description":"The heading and sentence of one platform-drawn answer page. Frozen, strict keys.\n\n``heading`` is the page's ``\u003ctitle>`` and ``\u003ch1>``; ``text`` is its one sentence. Each is\nthe sender's own words, in the end-user's language; absent, the page shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key\nis refused.","properties":{"heading":{"oneOf":[{"type":"string","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0.heading.oneOf.0","typeLabel":"string"},{"type":"null","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0.heading.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0.heading","typeLabel":"string | null"},"text":{"oneOf":[{"type":"string","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0.text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0.text","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.0","typeLabel":"PageCopy · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.confirm","typeLabel":"PageCopy · object | null"},"done":{"oneOf":[{"type":"object","title":"PageCopy","description":"The heading and sentence of one platform-drawn answer page. Frozen, strict keys.\n\n``heading`` is the page's ``\u003ctitle>`` and ``\u003ch1>``; ``text`` is its one sentence. Each is\nthe sender's own words, in the end-user's language; absent, the page shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key\nis refused.","properties":{"heading":{"oneOf":[{"type":"string","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0.heading.oneOf.0","typeLabel":"string"},{"type":"null","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0.heading.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0.heading","typeLabel":"string | null"},"text":{"oneOf":[{"type":"string","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0.text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0.text","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.0","typeLabel":"PageCopy · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.done","typeLabel":"PageCopy · object | null"},"form":{"oneOf":[{"type":"object","title":"FormPageWording","description":"The caller's words for the form page's own sentences, for ONE send. Frozen, strict keys.\n\n``failed`` is the line when the send did not land; ``network_error`` is the line when the\nbrowser could not reach the server; ``choose_one`` is the validation line for a required\nmulti-choice left empty; ``date_unavailable`` is the validation line for a blocked date. Each\nis the sender's own words, in the end-user's language; absent, the page shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key is\nrefused.","properties":{"choose_one":{"oneOf":[{"type":"string","title":"Choose One","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.choose_one.oneOf.0","typeLabel":"string"},{"type":"null","title":"Choose One","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.choose_one.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.choose_one","typeLabel":"string | null"},"date_unavailable":{"oneOf":[{"type":"string","title":"Date Unavailable","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.date_unavailable.oneOf.0","typeLabel":"string"},{"type":"null","title":"Date Unavailable","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.date_unavailable.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.date_unavailable","typeLabel":"string | null"},"failed":{"oneOf":[{"type":"string","title":"Failed","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.failed.oneOf.0","typeLabel":"string"},{"type":"null","title":"Failed","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.failed.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.failed","typeLabel":"string | null"},"network_error":{"oneOf":[{"type":"string","title":"Network Error","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.network_error.oneOf.0","typeLabel":"string"},{"type":"null","title":"Network Error","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.network_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0.network_error","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.0","typeLabel":"FormPageWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.form","typeLabel":"FormPageWording · object | null"},"submitted":{"oneOf":[{"type":"object","title":"PageCopy","description":"The heading and sentence of one platform-drawn answer page. Frozen, strict keys.\n\n``heading`` is the page's ``\u003ctitle>`` and ``\u003ch1>``; ``text`` is its one sentence. Each is\nthe sender's own words, in the end-user's language; absent, the page shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key\nis refused.","properties":{"heading":{"oneOf":[{"type":"string","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0.heading.oneOf.0","typeLabel":"string"},{"type":"null","title":"Heading","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0.heading.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0.heading","typeLabel":"string | null"},"text":{"oneOf":[{"type":"string","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0.text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0.text","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.0","typeLabel":"PageCopy · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0.submitted","typeLabel":"PageCopy · object | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.0","typeLabel":"AnswerPageWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.answer_page","typeLabel":"AnswerPageWording · object | null"},"choice":{"oneOf":[{"type":"object","title":"ChoiceWording","description":"The caller's words for a choice list, for ONE send. Frozen, strict keys.\n\n``label`` is the word on the control that presents the list (the button or control that opens\nit); ``reply_hint`` is the line under a list rendered as numbered text telling the end user how\nto reply; ``group_label`` is the accessible name of a flat group of option buttons. Each text\nis the sender's own words, in the end-user's language; absent, the surface shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key is\nrefused.","properties":{"group_label":{"oneOf":[{"type":"string","title":"Group Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.group_label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Group Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.group_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.group_label","typeLabel":"string | null"},"label":{"oneOf":[{"type":"string","title":"Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.label","typeLabel":"string | null"},"reply_hint":{"oneOf":[{"type":"string","title":"Reply Hint","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.reply_hint.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reply Hint","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.reply_hint.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0.reply_hint","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.0","typeLabel":"ChoiceWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.choice","typeLabel":"ChoiceWording · object | null"},"form":{"oneOf":[{"type":"object","title":"FormWording","description":"The caller's words for a form's platform-drawn chrome and sentences, for ONE send. Frozen, strict keys.\n\n``title`` heads the form surface; ``open`` labels the button that opens the form; ``cancel``\nlabels its cancel/close; ``back`` labels the button that returns to the previous step of a\nstepped form; ``submit`` labels the terminal button of a form with no pages; ``review_empty``\nis the line the review step shows before anything is filled; ``error_line`` is the one line a\nsurface shows above a form it refused, in place of its own per-field summary; ``update_failed``\nis the sentence a surface shows when it could not update the form (a reaction failed or\nreturned something the surface cannot draw) and takes an OPTIONAL ``{reason}`` token, filled\nwith the reaction door's reason (``FormReactionError.reason``) and empty when the surface has\nnone; ``step_progress`` is the progress line a stepped form shows above its current step; it\nMUST contain ``{step}`` (the current step's number) and ``{steps}`` (the step count), each filled\nby a plain substitution; ``fields`` carries per-field words keyed by property name. Each text is\nthe sender's own words, in the end-user's language; absent, the surface shows its own generic\nword. A set value is non-blank; an empty object names nothing and is refused; an unknown key is\nrefused.","properties":{"back":{"oneOf":[{"type":"string","title":"Back","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.back.oneOf.0","typeLabel":"string"},{"type":"null","title":"Back","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.back.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.back","typeLabel":"string | null"},"cancel":{"oneOf":[{"type":"string","title":"Cancel","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.cancel.oneOf.0","typeLabel":"string"},{"type":"null","title":"Cancel","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.cancel.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.cancel","typeLabel":"string | null"},"error_line":{"oneOf":[{"type":"string","title":"Error Line","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.error_line.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error Line","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.error_line.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.error_line","typeLabel":"string | null"},"fields":{"additionalProperties":{"additionalProperties":false,"description":"The caller's words for one form field's platform-drawn controls. Frozen, strict keys.\n\n``choice_label`` is the placeholder of the field's picker (its empty-state prompt); ``invalid``\nis the sentence shown when the field's value does not have its declared shape (never a missing\nrequired value: that is ``required``); ``required`` is the sentence a surface shows when this\nfield's required value is missing (at the field or anywhere inside it). ``true_label`` /\n``false_label`` are the words a surface shows for a boolean field's true and false values, on\nits control and in its readback. ``length_hint`` is the hint drawn under a text control that has\na maximum length; it MUST contain ``{max}`` (the maximum, filled by a plain substitution).\n``add_item`` / ``remove_item`` / ``item_label`` / ``no_items`` are the words of a free-text list\nfield: ``add_item`` its add button, ``remove_item`` each item's remove button, ``item_label``\neach item's label, which MUST contain ``{n}`` (the item's number, a plain substitution), and\n``no_items`` the line shown while the list is empty. Each is the sender's own words, in the\nend-user's language; absent, the surface shows its own generic word (for ``invalid``, its own\nword for the failing shape). A set value is non-blank; an empty object names nothing and is\nrefused; an unknown key is refused.","properties":{"add_item":{"oneOf":[{"type":"string","title":"Add Item","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.add_item.oneOf.0","typeLabel":"string"},{"type":"null","title":"Add Item","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.add_item.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.add_item","typeLabel":"string | null"},"choice_label":{"oneOf":[{"type":"string","title":"Choice Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.choice_label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Choice Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.choice_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.choice_label","typeLabel":"string | null"},"false_label":{"oneOf":[{"type":"string","title":"False Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.false_label.oneOf.0","typeLabel":"string"},{"type":"null","title":"False Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.false_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.false_label","typeLabel":"string | null"},"invalid":{"oneOf":[{"type":"string","title":"Invalid","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.invalid.oneOf.0","typeLabel":"string"},{"type":"null","title":"Invalid","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.invalid.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.invalid","typeLabel":"string | null"},"item_label":{"oneOf":[{"type":"string","title":"Item Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.item_label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Item Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.item_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.item_label","typeLabel":"string | null"},"length_hint":{"oneOf":[{"type":"string","title":"Length Hint","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.length_hint.oneOf.0","typeLabel":"string"},{"type":"null","title":"Length Hint","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.length_hint.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.length_hint","typeLabel":"string | null"},"no_items":{"oneOf":[{"type":"string","title":"No Items","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.no_items.oneOf.0","typeLabel":"string"},{"type":"null","title":"No Items","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.no_items.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.no_items","typeLabel":"string | null"},"remove_item":{"oneOf":[{"type":"string","title":"Remove Item","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.remove_item.oneOf.0","typeLabel":"string"},{"type":"null","title":"Remove Item","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.remove_item.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.remove_item","typeLabel":"string | null"},"required":{"oneOf":[{"type":"string","title":"Required","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.required.oneOf.0","typeLabel":"string"},{"type":"null","title":"Required","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.required.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.required","typeLabel":"string | null"},"true_label":{"oneOf":[{"type":"string","title":"True Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.true_label.oneOf.0","typeLabel":"string"},{"type":"null","title":"True Label","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.true_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties.true_label","typeLabel":"string | null"}},"title":"FieldWording","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields.additionalProperties","typeLabel":"FieldWording · object"},"default":{},"title":"Fields","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.fields","typeLabel":"Fields · object"},"open":{"oneOf":[{"type":"string","title":"Open","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.open.oneOf.0","typeLabel":"string"},{"type":"null","title":"Open","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.open.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.open","typeLabel":"string | null"},"review_empty":{"oneOf":[{"type":"string","title":"Review Empty","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.review_empty.oneOf.0","typeLabel":"string"},{"type":"null","title":"Review Empty","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.review_empty.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.review_empty","typeLabel":"string | null"},"step_progress":{"oneOf":[{"type":"string","title":"Step Progress","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.step_progress.oneOf.0","typeLabel":"string"},{"type":"null","title":"Step Progress","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.step_progress.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.step_progress","typeLabel":"string | null"},"submit":{"oneOf":[{"type":"string","title":"Submit","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.submit.oneOf.0","typeLabel":"string"},{"type":"null","title":"Submit","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.submit.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.submit","typeLabel":"string | null"},"title":{"oneOf":[{"type":"string","title":"Title","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.title.oneOf.0","typeLabel":"string"},{"type":"null","title":"Title","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.title.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.title","typeLabel":"string | null"},"update_failed":{"oneOf":[{"type":"string","title":"Update Failed","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.update_failed.oneOf.0","typeLabel":"string"},{"type":"null","title":"Update Failed","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.update_failed.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0.update_failed","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.0","typeLabel":"FormWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.form","typeLabel":"FormWording · object | null"},"lines":{"oneOf":[{"type":"object","title":"LineWording","description":"The caller's words for the lines of a delivery message, for ONE send. Frozen, strict keys.\n\n``answer_link`` is the sentence carrying the tappable answer link and MUST contain the ``{url}``\ntoken (the channel fills it by a plain substitution); ``deadline`` names the deadline and MUST\ncontain ``{deadline}`` (the channel fills it with its own formatted instant); ``reply`` tells\nthe end user how to reply and carries no token; ``options`` lists the choices and MUST contain\n``{options}`` (the channel fills it with its own joined list). Each is the sender's own words,\nin the end-user's language; absent, the surface shows its own generic word. A set value is\nnon-blank; an empty object names nothing and is refused; an unknown key is refused.","properties":{"answer_link":{"oneOf":[{"type":"string","title":"Answer Link","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.answer_link.oneOf.0","typeLabel":"string"},{"type":"null","title":"Answer Link","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.answer_link.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.answer_link","typeLabel":"string | null"},"deadline":{"oneOf":[{"type":"string","title":"Deadline","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.deadline.oneOf.0","typeLabel":"string"},{"type":"null","title":"Deadline","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.deadline.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.deadline","typeLabel":"string | null"},"options":{"oneOf":[{"type":"string","title":"Options","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.options.oneOf.0","typeLabel":"string"},{"type":"null","title":"Options","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.options.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.options","typeLabel":"string | null"},"reply":{"oneOf":[{"type":"string","title":"Reply","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.reply.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reply","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.reply.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0.reply","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.0","typeLabel":"LineWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.lines","typeLabel":"LineWording · object | null"},"status":{"oneOf":[{"type":"object","title":"StatusWording","description":"The caller's words for in-flight and settled status copy, for ONE send. Frozen, strict keys.\n\n``sending`` is the screen-reader label while a send is in flight; ``answered`` / ``expired`` /\n``closed`` are the badges once a question settles; ``sent`` is the badge after an ask-less form\nis submitted; ``unavailable`` is the line when a form's door no longer resolves; ``countdown``\ncarries the live-countdown words. Each is the sender's own words, in the end-user's language;\nabsent, the surface shows its own generic word. A set value is non-blank; an empty object names\nnothing and is refused; an unknown key is refused.","properties":{"answered":{"oneOf":[{"type":"string","title":"Answered","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.answered.oneOf.0","typeLabel":"string"},{"type":"null","title":"Answered","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.answered.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.answered","typeLabel":"string | null"},"closed":{"oneOf":[{"type":"string","title":"Closed","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.closed.oneOf.0","typeLabel":"string"},{"type":"null","title":"Closed","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.closed.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.closed","typeLabel":"string | null"},"countdown":{"oneOf":[{"type":"object","title":"CountdownWording","description":"The caller's words for a live question card's countdown, for ONE send. Frozen, strict keys.\n\n``seconds_left`` is the visible plural line and MUST contain the ``{seconds}`` token (the card\nfills it with the number remaining); ``one_second_left`` is the visible singular line;\n``under_minute`` / ``under_half_minute`` / ``under_ten_seconds`` are the spoken lines at the\nthree thresholds. Each is the sender's own words, in the end-user's language; absent, the card\nshows its own generic word. A set value is non-blank; an empty object names nothing and is\nrefused; an unknown key is refused.","properties":{"one_second_left":{"oneOf":[{"type":"string","title":"One Second Left","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.one_second_left.oneOf.0","typeLabel":"string"},{"type":"null","title":"One Second Left","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.one_second_left.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.one_second_left","typeLabel":"string | null"},"seconds_left":{"oneOf":[{"type":"string","title":"Seconds Left","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.seconds_left.oneOf.0","typeLabel":"string"},{"type":"null","title":"Seconds Left","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.seconds_left.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.seconds_left","typeLabel":"string | null"},"under_half_minute":{"oneOf":[{"type":"string","title":"Under Half Minute","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_half_minute.oneOf.0","typeLabel":"string"},{"type":"null","title":"Under Half Minute","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_half_minute.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_half_minute","typeLabel":"string | null"},"under_minute":{"oneOf":[{"type":"string","title":"Under Minute","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_minute.oneOf.0","typeLabel":"string"},{"type":"null","title":"Under Minute","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_minute.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_minute","typeLabel":"string | null"},"under_ten_seconds":{"oneOf":[{"type":"string","title":"Under Ten Seconds","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_ten_seconds.oneOf.0","typeLabel":"string"},{"type":"null","title":"Under Ten Seconds","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_ten_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0.under_ten_seconds","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.0","typeLabel":"CountdownWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.countdown","typeLabel":"CountdownWording · object | null"},"expired":{"oneOf":[{"type":"string","title":"Expired","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.expired.oneOf.0","typeLabel":"string"},{"type":"null","title":"Expired","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.expired.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.expired","typeLabel":"string | null"},"sending":{"oneOf":[{"type":"string","title":"Sending","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.sending.oneOf.0","typeLabel":"string"},{"type":"null","title":"Sending","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.sending.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.sending","typeLabel":"string | null"},"sent":{"oneOf":[{"type":"string","title":"Sent","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.sent.oneOf.0","typeLabel":"string"},{"type":"null","title":"Sent","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.sent.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.sent","typeLabel":"string | null"},"unavailable":{"oneOf":[{"type":"string","title":"Unavailable","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.unavailable.oneOf.0","typeLabel":"string"},{"type":"null","title":"Unavailable","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.unavailable.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0.unavailable","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.0","typeLabel":"StatusWording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0.status","typeLabel":"StatusWording · object | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.0","typeLabel":"Wording · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX].wording","typeLabel":"Wording · object | null"}},"title":"AnswerPart","type":"object","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0.items.[INDEX]","typeLabel":"AnswerPart · object"},"title":"Answer Parts","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.0","typeLabel":"AnswerPart · object[]"},{"type":"null","title":"Answer Parts","uniqueKey":"data.\\items.items.[INDEX].answer_parts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_parts","typeLabel":"AnswerPart · object[] | null"},"answer_status":{"oneOf":[{"type":"string","title":"Answer Status","enum":["answered","error","silent","merged","superseded"],"uniqueKey":"data.\\items.items.[INDEX].answer_status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Answer Status","uniqueKey":"data.\\items.items.[INDEX].answer_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].answer_status","typeLabel":"enum\u003cstring> | null"},"ask":{"oneOf":[{"type":"object","title":"AskSendView","description":"A record's :class:`AskSend` as a read door serves it.\n\nAn admin read carries every field; the caller-scoped read carries only ``sensitive``, so the\nothers are absent from it.","required":["sensitive"],"properties":{"sensitive":{"title":"Sensitive","type":"boolean","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.sensitive","typeLabel":"boolean"},"answer_format":{"oneOf":[{"type":"string","title":"Answer Format","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.answer_format.oneOf.0","typeLabel":"string"},{"type":"null","title":"Answer Format","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.answer_format.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.answer_format","typeLabel":"string | null"},"attempts":{"oneOf":[{"type":"integer","title":"Attempts","minimum":0,"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.attempts.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Attempts","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.attempts","typeLabel":"integer | null"},"interaction_id":{"oneOf":[{"type":"string","title":"Interaction Id","minLength":1,"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.interaction_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Interaction Id","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.interaction_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.interaction_id","typeLabel":"string | null"},"timed_out_attempts":{"oneOf":[{"type":"array","items":{"type":"integer","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.timed_out_attempts.oneOf.0.items.[INDEX]","typeLabel":"integer"},"title":"Timed Out Attempts","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.timed_out_attempts.oneOf.0","typeLabel":"integer[]"},{"type":"null","title":"Timed Out Attempts","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.timed_out_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0.timed_out_attempts","typeLabel":"integer[] | null"}},"uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.0","typeLabel":"AskSendView · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].ask.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask","typeLabel":"AskSendView · object | null"},"ask_reply":{"oneOf":[{"type":"object","title":"AskReplyView","description":"A record's :class:`AskReply` as a read door serves it.\n\n``answer`` is ``None`` on a sensitive ask. An admin read carries every field; the\ncaller-scoped read carries only ``answer`` and ``reply_to``, so the others are absent from it.","required":["answer"],"properties":{"answer":{"oneOf":[{"title":"Answer","isRequired":true},{"type":"null","title":"Answer","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.answer.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.answer","typeLabel":"null"},"answered_at":{"oneOf":[{"type":"string","title":"Answered At","format":"date-time","uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.answered_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Answered At","uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.answered_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.answered_at","typeLabel":"string\u003cdate-time> | null"},"medium_message_id":{"oneOf":[{"type":"string","title":"Medium Message Id","uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.medium_message_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Medium Message Id","uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.medium_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.medium_message_id","typeLabel":"string | null"},"reply_to":{"oneOf":[{"type":"object","title":"ReplyTo","description":"The message an inbound reply quotes, as the platform resolved it from the thread's record.\n\n``message_id`` is the id the end user's side names the quoted message by: the medium's message\nid on a channel, the platform's record ``message_id`` on the API door. ``status`` says what the\nplatform found (:class:`ReplyToStatus`). ``text`` is the quoted message's text when ``status``\nis ``found``, and ``None`` for every other status. Frozen.","required":["message_id","status","text"],"properties":{"message_id":{"title":"Message Id","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.0.message_id","typeLabel":"string"},"status":{"description":"What the platform found for the message an inbound reply quotes.","enum":["found","not_found","sensitive","no_text"],"title":"ReplyToStatus","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.0.status","typeLabel":"enum\u003cstring>"},"text":{"oneOf":[{"type":"string","title":"Text","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.0.text.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.0.text","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.0","typeLabel":"ReplyTo · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0.reply_to","typeLabel":"ReplyTo · object | null"}},"uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.0","typeLabel":"AskReplyView · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].ask_reply.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].ask_reply","typeLabel":"AskReplyView · object | null"},"attempts":{"oneOf":[{"type":"integer","title":"Attempts","uniqueKey":"data.\\items.items.[INDEX].attempts.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Attempts","uniqueKey":"data.\\items.items.[INDEX].attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].attempts","typeLabel":"integer | null"},"callback_url":{"oneOf":[{"type":"string","title":"Callback Url","uniqueKey":"data.\\items.items.[INDEX].callback_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Callback Url","uniqueKey":"data.\\items.items.[INDEX].callback_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].callback_url","typeLabel":"string | null"},"caller_principal":{"oneOf":[{"type":"string","title":"Caller Principal","uniqueKey":"data.\\items.items.[INDEX].caller_principal.oneOf.0","typeLabel":"string"},{"type":"null","title":"Caller Principal","uniqueKey":"data.\\items.items.[INDEX].caller_principal.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].caller_principal","typeLabel":"string | null"},"channel":{"oneOf":[{"type":"string","title":"Channel","uniqueKey":"data.\\items.items.[INDEX].channel.oneOf.0","typeLabel":"string"},{"type":"null","title":"Channel","uniqueKey":"data.\\items.items.[INDEX].channel.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].channel","typeLabel":"string | null"},"delivery_status":{"description":"Where a record sits between intake and a terminal outcome.\n\n``accepted`` is pre-turn intake and carries no answer; ``pending_delivery`` is\npersisted-but-unsent (what a re-drive resumes); ``provisional`` is sent and awaiting an\nout-of-band receipt or grace expiry; ``delivered``/``failed``/``shed``/``silent``/\n``merged``/``superseded`` are terminal and are the only states carrying the retention\nTTL. ``shed`` ran no turn and never sends; ``silent`` ran a tool turn whose reply mapped\nto nothing and so, by design, sends nothing; ``delivered`` on an api record without a\ncallback means the answer is readable at the message door and nothing was sent. ``merged``\nand ``superseded`` are the channel-door terminal states of an overlap outcome — a message\nwhose text was carried into a later turn (``merged``) or dropped in favour of one\n(``superseded``); each names that turn through ``successor_id`` and, like ``silent``, never\nsends. On the API door an overlap outcome rides ``pending_delivery`` carrying the matching\n``answer_status`` until its marker is delivered, the ``silent`` split.\n\nTwo states belong to a send record (``origin=\"send\"``) alone. ``sending`` is not terminal:\nthe record is written and its send has started; nothing re-sends it, and a row left in it\npast its settle deadline is settled to ``outcome_unknown``. ``outcome_unknown`` is terminal:\nthe send started and never reported an outcome (it passed its bound, it was cancelled while\nthe medium call was in flight, or the process stopped), so the message may or may not have\nreached the participant; it is never re-sent.","enum":["accepted","pending_delivery","provisional","delivered","failed","shed","silent","merged","superseded","sending","outcome_unknown"],"title":"DeliveryStatus","type":"string","default":"pending_delivery","uniqueKey":"data.\\items.items.[INDEX].delivery_status","typeLabel":"enum\u003cstring>"},"error":{"oneOf":[{"type":"string","title":"Error","uniqueKey":"data.\\items.items.[INDEX].error.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error","uniqueKey":"data.\\items.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].error","typeLabel":"string | null"},"inbound_attachments":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"description":"One media item shown WITH a message — a display element, and inbound a participant's sent media.\n\n``kind`` selects how it renders: an ``image`` inline, a ``document``/``video``/``audio`` as\nthe matching file bubble, a ``link`` as a labelled anchor. ``url`` is the source. A file\nkind (``image``/``document``/``video``/``audio``) must be an absolute ``https`` URL, a\nsame-origin ``{MEDIA_ROUTE_PREFIX}{id}`` reference to media the skeleton serves by id, or an\nabsolute ``http(s)`` served reference of that same ``{MEDIA_ROUTE_PREFIX}{id}`` path a\nchannel send mints from ``public_base_url`` (remote file media is https-only: the inbox CSP\n``img-src`` admits ``https:``/``data:`` and same-origin but not ``http:``, so an ``http:``\nremote source would be an unrenderable record); ``image`` ADDITIONALLY admits an inline\n``data:image/*`` URI — that inline form is image-only, a ``data:`` URI on any other file\nkind is refused. A ``link`` must be an absolute ``http(s)`` URL (anchors are not governed by\n``img-src``; the human clicks through). A remote url names a host directly — an ASCII DNS\nname, dotted-quad IPv4, or bracketed IPv6 (IDN callers supply punycode); an embedded\n``user@`` credential form is rejected as it spoofs the authority — and is always a single\nline — raw whitespace and control/format characters are rejected. ``caption`` is the\naccessibility text — the image's alt text, a file's label, or the link's display label.\n``filename`` is the document's suggested display name; it is meaningful ONLY for a\n``document`` item and is refused on every other kind.","properties":{"kind":{"description":"How a media item renders: an inline image, a file bubble, or a labelled link.","enum":["image","link","document","video","audio"],"title":"MediaKind","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"url":{"title":"Url","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].url","typeLabel":"string"},"caption":{"oneOf":[{"type":"string","title":"Caption","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].caption.oneOf.0","typeLabel":"string"},{"type":"null","title":"Caption","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].caption.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].caption","typeLabel":"string | null"},"filename":{"oneOf":[{"type":"string","title":"Filename","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].filename.oneOf.0","typeLabel":"string"},{"type":"null","title":"Filename","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].filename.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX].filename","typeLabel":"string | null"}},"required":["kind","url"],"title":"MediaItem","type":"object","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0.items.[INDEX]","typeLabel":"MediaItem · object"},"title":"Inbound Attachments","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.0","typeLabel":"MediaItem · object[]"},{"type":"null","title":"Inbound Attachments","uniqueKey":"data.\\items.items.[INDEX].inbound_attachments.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_attachments","typeLabel":"MediaItem · object[] | null"},"inbound_event":{"oneOf":[{"type":"object","title":"Inbound Event","additionalProperties":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_event.oneOf.0","typeLabel":"Inbound Event · object"},{"type":"null","title":"Inbound Event","uniqueKey":"data.\\items.items.[INDEX].inbound_event.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_event","typeLabel":"Inbound Event · object | null"},"inbound_form":{"oneOf":[{"type":"object","title":"Inbound Form","additionalProperties":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_form.oneOf.0","typeLabel":"Inbound Form · object"},{"type":"null","title":"Inbound Form","uniqueKey":"data.\\items.items.[INDEX].inbound_form.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_form","typeLabel":"Inbound Form · object | null"},"inbound_form_tag":{"oneOf":[{"type":"string","title":"Inbound Form Tag","uniqueKey":"data.\\items.items.[INDEX].inbound_form_tag.oneOf.0","typeLabel":"string"},{"type":"null","title":"Inbound Form Tag","uniqueKey":"data.\\items.items.[INDEX].inbound_form_tag.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_form_tag","typeLabel":"string | null"},"inbound_kind":{"default":"message","enum":["message","event"],"title":"Inbound Kind","type":"string","uniqueKey":"data.\\items.items.[INDEX].inbound_kind","typeLabel":"enum\u003cstring>"},"inbound_locale":{"oneOf":[{"type":"string","title":"Inbound Locale","uniqueKey":"data.\\items.items.[INDEX].inbound_locale.oneOf.0","typeLabel":"string"},{"type":"null","title":"Inbound Locale","uniqueKey":"data.\\items.items.[INDEX].inbound_locale.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_locale","typeLabel":"string | null"},"inbound_location":{"oneOf":[{"type":"object","title":"LocationElement","description":"A geographic point shared on a message — the one shape used BOTH ways.\n\nIt is an outbound place the sender shares and the inbound location a participant sent.\n``latitude``/``longitude`` are WGS84 decimal degrees, bounded to their valid ranges\n(latitude -90..90, longitude -180..180). ``name`` is an optional place label and ``address``\nan optional street address, each a single-line non-blank string within its cap when present\n(raw whitespace and control/format characters are rejected, as on a media url — an embedded\nnewline or bidi spoof would corrupt the rendered pin label). A channel that cannot render a\nmap renders the coordinates (and any name/address) as text. Frozen.","required":["latitude","longitude"],"properties":{"latitude":{"title":"Latitude","type":"number","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.latitude","typeLabel":"number"},"longitude":{"title":"Longitude","type":"number","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.longitude","typeLabel":"number"},"address":{"oneOf":[{"type":"string","title":"Address","uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.address.oneOf.0","typeLabel":"string"},{"type":"null","title":"Address","uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.address.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.address","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","title":"Name","uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0.name","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.0","typeLabel":"LocationElement · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].inbound_location.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_location","typeLabel":"LocationElement · object | null"},"inbound_message_id":{"oneOf":[{"type":"string","title":"Inbound Message Id","uniqueKey":"data.\\items.items.[INDEX].inbound_message_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Inbound Message Id","uniqueKey":"data.\\items.items.[INDEX].inbound_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_message_id","typeLabel":"string | null"},"inbound_reply_to":{"oneOf":[{"type":"object","title":"ReplyTo","description":"The message an inbound reply quotes, as the platform resolved it from the thread's record.\n\n``message_id`` is the id the end user's side names the quoted message by: the medium's message\nid on a channel, the platform's record ``message_id`` on the API door. ``status`` says what the\nplatform found (:class:`ReplyToStatus`). ``text`` is the quoted message's text when ``status``\nis ``found``, and ``None`` for every other status. Frozen.","required":["message_id","status","text"],"properties":{"message_id":{"title":"Message Id","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.0.message_id","typeLabel":"string"},"status":{"description":"What the platform found for the message an inbound reply quotes.","enum":["found","not_found","sensitive","no_text"],"title":"ReplyToStatus","type":"string","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.0.status","typeLabel":"enum\u003cstring>"},"text":{"oneOf":[{"type":"string","title":"Text","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.0.text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.0.text.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.0.text","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.0","typeLabel":"ReplyTo · object"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].inbound_reply_to","typeLabel":"ReplyTo · object | null"},"operator_send":{"default":false,"title":"Operator Send","type":"boolean","uniqueKey":"data.\\items.items.[INDEX].operator_send","typeLabel":"boolean"},"our_identity":{"oneOf":[{"type":"string","title":"Our Identity","uniqueKey":"data.\\items.items.[INDEX].our_identity.oneOf.0","typeLabel":"string"},{"type":"null","title":"Our Identity","uniqueKey":"data.\\items.items.[INDEX].our_identity.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].our_identity","typeLabel":"string | null"},"pending_receipt":{"oneOf":[{"type":"string","title":"DeliveryStatus","description":"Where a record sits between intake and a terminal outcome.\n\n``accepted`` is pre-turn intake and carries no answer; ``pending_delivery`` is\npersisted-but-unsent (what a re-drive resumes); ``provisional`` is sent and awaiting an\nout-of-band receipt or grace expiry; ``delivered``/``failed``/``shed``/``silent``/\n``merged``/``superseded`` are terminal and are the only states carrying the retention\nTTL. ``shed`` ran no turn and never sends; ``silent`` ran a tool turn whose reply mapped\nto nothing and so, by design, sends nothing; ``delivered`` on an api record without a\ncallback means the answer is readable at the message door and nothing was sent. ``merged``\nand ``superseded`` are the channel-door terminal states of an overlap outcome — a message\nwhose text was carried into a later turn (``merged``) or dropped in favour of one\n(``superseded``); each names that turn through ``successor_id`` and, like ``silent``, never\nsends. On the API door an overlap outcome rides ``pending_delivery`` carrying the matching\n``answer_status`` until its marker is delivered, the ``silent`` split.\n\nTwo states belong to a send record (``origin=\"send\"``) alone. ``sending`` is not terminal:\nthe record is written and its send has started; nothing re-sends it, and a row left in it\npast its settle deadline is settled to ``outcome_unknown``. ``outcome_unknown`` is terminal:\nthe send started and never reported an outcome (it passed its bound, it was cancelled while\nthe medium call was in flight, or the process stopped), so the message may or may not have\nreached the participant; it is never re-sent.","enum":["accepted","pending_delivery","provisional","delivered","failed","shed","silent","merged","superseded","sending","outcome_unknown"],"uniqueKey":"data.\\items.items.[INDEX].pending_receipt.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"data.\\items.items.[INDEX].pending_receipt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].pending_receipt","typeLabel":"enum\u003cstring> | null"},"provider_message_id":{"oneOf":[{"type":"string","title":"Provider Message Id","minLength":1,"uniqueKey":"data.\\items.items.[INDEX].provider_message_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider Message Id","uniqueKey":"data.\\items.items.[INDEX].provider_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].provider_message_id","typeLabel":"string | null"},"route_missing":{"default":false,"title":"Route Missing","type":"boolean","uniqueKey":"data.\\items.items.[INDEX].route_missing","typeLabel":"boolean"},"sends":{"items":{"description":"One sent part of a record's answer and the provider ids its medium gave it.\n\n``part`` indexes the record's ``answer_parts`` (``0`` for a plain-text answer), ``chars``\nis how much of that part this message carried, and ``provider_message_ids`` are the ids an\nout-of-band receipt correlates.","properties":{"chars":{"minimum":0,"title":"Chars","type":"integer","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].sends.items.[INDEX].chars","typeLabel":"integer"},"part":{"minimum":0,"title":"Part","type":"integer","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].sends.items.[INDEX].part","typeLabel":"integer"},"provider_message_ids":{"items":{"type":"string","uniqueKey":"data.\\items.items.[INDEX].sends.items.[INDEX].provider_message_ids.items.[INDEX]","typeLabel":"string"},"title":"Provider Message Ids","type":"array","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].sends.items.[INDEX].provider_message_ids","typeLabel":"string[]"}},"required":["part","chars","provider_message_ids"],"title":"SentMessage","type":"object","uniqueKey":"data.\\items.items.[INDEX].sends.items.[INDEX]","typeLabel":"SentMessage · object"},"title":"Sends","type":"array","uniqueKey":"data.\\items.items.[INDEX].sends","typeLabel":"SentMessage · object[]"},"sent_by":{"oneOf":[{"type":"string","title":"Sent By","enum":["notify","ask","notice","channel"],"uniqueKey":"data.\\items.items.[INDEX].sent_by.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Sent By","uniqueKey":"data.\\items.items.[INDEX].sent_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].sent_by","typeLabel":"enum\u003cstring> | null"},"submitted_by":{"oneOf":[{"type":"string","title":"Submitted By","uniqueKey":"data.\\items.items.[INDEX].submitted_by.oneOf.0","typeLabel":"string"},{"type":"null","title":"Submitted By","uniqueKey":"data.\\items.items.[INDEX].submitted_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].submitted_by","typeLabel":"string | null"},"successor_id":{"oneOf":[{"type":"string","title":"Successor Id","uniqueKey":"data.\\items.items.[INDEX].successor_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Successor Id","uniqueKey":"data.\\items.items.[INDEX].successor_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].successor_id","typeLabel":"string | null"},"turn_message_id":{"oneOf":[{"type":"string","title":"Turn Message Id","uniqueKey":"data.\\items.items.[INDEX].turn_message_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Turn Message Id","uniqueKey":"data.\\items.items.[INDEX].turn_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.\\items.items.[INDEX].turn_message_id","typeLabel":"string | null"}},"required":["message_id","route_name","door","thread_id","client_address","origin","inbound_text","created_at","updated_at"],"title":"ConversationRecordView","type":"object","uniqueKey":"data.\\items.items.[INDEX]","typeLabel":"ConversationRecordView · object"},"title":"Items","type":"array","isRequired":true,"uniqueKey":"data.\\items","typeLabel":"ConversationRecordView · object[]"},"next_page":{"oneOf":[{"type":"integer","title":"Next Page","isRequired":true,"uniqueKey":"data.next_page.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Next Page","isRequired":true,"uniqueKey":"data.next_page.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.next_page","typeLabel":"integer | null"},"page":{"title":"Page","type":"integer","isRequired":true,"uniqueKey":"data.page","typeLabel":"integer"},"page_size":{"title":"Page Size","type":"integer","isRequired":true,"uniqueKey":"data.page_size","typeLabel":"integer"},"total":{"title":"Total","type":"integer","isRequired":true,"uniqueKey":"data.total","typeLabel":"integer"},"truncated":{"title":"Truncated","type":"boolean","isRequired":true,"uniqueKey":"data.truncated","typeLabel":"boolean"},"unreadable":{"default":0,"title":"Unreadable","type":"integer","uniqueKey":"data.unreadable","typeLabel":"integer"}},"required":["items","total","page","page_size","next_page","truncated"],"title":"MessageSearchEnvelope","type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"MessageSearchEnvelope · object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"items":[{"client_address":"\u003cstring>","created_at":123,"door":"api","inbound_text":"\u003cstring>","message_id":"\u003cstring>","origin":"client","route_name":"\u003cstring>","thread_id":"\u003cstring>","updated_at":123,"answer":"\u003cstring>","answer_parts":[{"data":{"options":{},"values":{}},"footer":"\u003cstring>","form_tag":"\u003cstring>","header":{"kind":"image","url":"\u003cstring>","caption":"\u003cstring>","filename":"\u003cstring>"},"location":{"latitude":123,"longitude":123,"address":"\u003cstring>","name":"\u003cstring>"},"media":[{"kind":"image","url":"\u003cstring>","caption":"\u003cstring>","filename":"\u003cstring>"}],"message":"","options":[{"text":"\u003cstring>","description":"\u003cstring>","id":"\u003cstring>","kind":"reply"}],"pages":[{"fields":["\u003cstring>"],"title":"\u003cstring>","button_label":"\u003cstring>","display":[],"kind":"input"}],"schema":{},"sections":[{"rows":[{"text":"\u003cstring>","description":"\u003cstring>","id":"\u003cstring>","kind":"reply"}],"title":"\u003cstring>"}],"template":{"language":"\u003cstring>","name":"\u003cstring>","parameters":{}},"wording":{"answer":{"confirm":"\u003cstring>","decline":"\u003cstring>","open":"\u003cstring>","rejected":"\u003cstring>","rejected_final":"\u003cstring>","reply_hint":"\u003cstring>","submit":"\u003cstring>"},"answer_page":{"awaiting":{"heading":"\u003cstring>","text":"\u003cstring>"},"confirm":{"heading":"\u003cstring>","text":"\u003cstring>"},"done":{"heading":"\u003cstring>","text":"\u003cstring>"},"form":{"choose_one":"\u003cstring>","date_unavailable":"\u003cstring>","failed":"\u003cstring>","network_error":"\u003cstring>"},"submitted":{"heading":"\u003cstring>","text":"\u003cstring>"}},"choice":{"group_label":"\u003cstring>","label":"\u003cstring>","reply_hint":"\u003cstring>"},"form":{"back":"\u003cstring>","cancel":"\u003cstring>","error_line":"\u003cstring>","fields":{},"open":"\u003cstring>","review_empty":"\u003cstring>","step_progress":"\u003cstring>","submit":"\u003cstring>","title":"\u003cstring>","update_failed":"\u003cstring>"},"lines":{"answer_link":"\u003cstring>","deadline":"\u003cstring>","options":"\u003cstring>","reply":"\u003cstring>"},"status":{"answered":"\u003cstring>","closed":"\u003cstring>","countdown":{"one_second_left":"\u003cstring>","seconds_left":"\u003cstring>","under_half_minute":"\u003cstring>","under_minute":"\u003cstring>","under_ten_seconds":"\u003cstring>"},"expired":"\u003cstring>","sending":"\u003cstring>","sent":"\u003cstring>","unavailable":"\u003cstring>"}}}],"answer_status":"answered","ask":{"sensitive":true,"answer_format":"\u003cstring>","attempts":1,"interaction_id":"\u003cstring>","timed_out_attempts":[123]},"ask_reply":{"answer":"\u003cunknown>","answered_at":"2023-11-07T05:31:56Z","medium_message_id":"\u003cstring>","reply_to":{"message_id":"\u003cstring>","status":"found","text":"\u003cstring>"}},"attempts":123,"callback_url":"\u003cstring>","caller_principal":"\u003cstring>","channel":"\u003cstring>","delivery_status":"pending_delivery","error":"\u003cstring>","inbound_attachments":[{"kind":"image","url":"\u003cstring>","caption":"\u003cstring>","filename":"\u003cstring>"}],"inbound_event":{},"inbound_form":{},"inbound_form_tag":"\u003cstring>","inbound_kind":"message","inbound_locale":"\u003cstring>","inbound_location":{"latitude":123,"longitude":123,"address":"\u003cstring>","name":"\u003cstring>"},"inbound_message_id":"\u003cstring>","inbound_reply_to":{"message_id":"\u003cstring>","status":"found","text":"\u003cstring>"},"operator_send":false,"our_identity":"\u003cstring>","pending_receipt":"accepted","provider_message_id":"\u003cstring>","route_missing":false,"sends":[{"chars":1,"part":1,"provider_message_ids":["\u003cstring>"]}],"sent_by":"notify","submitted_by":"\u003cstring>","successor_id":"\u003cstring>","turn_message_id":"\u003cstring>"}],"next_page":123,"page":123,"page_size":123,"total":123,"truncated":true,"unreadable":0}}}},"exampleType":"generated"}},"description":"Success.","exampleType":"generated"},"e88eb283-d7f8-4a51-b6fc-b00f2abee86f":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"description":"Stable machine-readable reason a client keys a dedicated error state on, present on refusals that opt in (e.g. a 501 not-configured refusal). Optional: absent when the error carries only a human-readable message.","type":"string","uniqueKey":"code","typeLabel":"string"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Malformed request.","exampleType":"generated"},"5f4bd07e-75f1-4d76-8619-51247bc9da0f":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"description":"Stable machine-readable reason a client keys a dedicated error state on, present on refusals that opt in (e.g. a 501 not-configured refusal). Optional: absent when the error carries only a human-readable message.","type":"string","uniqueKey":"code","typeLabel":"string"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Missing or invalid api key.","exampleType":"generated"},"ed959249-7ec6-4c80-9a12-4bfee1b067e7":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"description":"Stable machine-readable reason a client keys a dedicated error state on, present on refusals that opt in (e.g. a 501 not-configured refusal). Optional: absent when the error carries only a human-readable message.","type":"string","uniqueKey":"code","typeLabel":"string"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Forbidden.","exampleType":"generated"},"44244e13-f384-4e38-a212-48d193c6406c":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"description":"Stable machine-readable reason a client keys a dedicated error state on, present on refusals that opt in (e.g. a 501 not-configured refusal). Optional: absent when the error carries only a human-readable message.","type":"string","uniqueKey":"code","typeLabel":"string"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Resource not found.","exampleType":"generated"},"39f0af6d-05ad-4029-87e2-815f84129469":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"description":"Stable machine-readable reason a client keys a dedicated error state on, present on refusals that opt in (e.g. a 501 not-configured refusal). Optional: absent when the error carries only a human-readable message.","type":"string","uniqueKey":"code","typeLabel":"string"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Error.","exampleType":"generated"}},"security":{"c70ffa4c-530f-4ff4-8b77-678eb0b73d74":{"ApiKeyAuth":{"in":"header","name":"x-api-key","type":"apiKey","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{},"processedSecurityOptions":[{"schemes":[{"scheme":{"in":"header","name":"x-api-key","type":"apiKey","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"x-api-key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"tai42","siteName":"TAI42","title":"TAI42 — the OS for AI tools","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T00:56:35.418Z","originalFileLocation":"api-reference/conversations/search-a-conversation-routes-messages.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Return every record on route_name whose inbound text or answer contains q, one page at a time. Across ALL the route\u0026#x27;s threads. The search spans every caller and address on the route, so it is admin-only, and each item is the WHOLE record (the same shape the transcript serves an admin). q is REQUIRED and non-blank. There is no per-route record index, so the search is a BOUNDED nested scan of the route\u0026#x27;s threads and their records; a page that spent its scan budget answers truncated: true LOUDLY, never a silent cut. Authorization is decided BEFORE the route is looked up, so a non-admin is refused the same way whether the name routes or not. An unknown route is a loud 404 to an admin; a blank q, a page/page_size below 1, or a page above the served maximum, is a 400. Returns {\u0026quot;items\u0026quot;, \u0026quot;total\u0026quot;, \u0026quot;page\u0026quot;, \u0026quot;page_size\u0026quot;, \u0026quot;next_page\u0026quot;, \u0026quot;truncated\u0026quot;, \u0026quot;unreadable\u0026quot;}, where total is the matches the bounded scan found and unreadable counts the scanned members whose row was gone or unparseable.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TAI42\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"TAI42 — the OS for AI tools\">\u003cmeta data-mint-head property=\"og:description\" content=\"An open-source runtime for MCP tools, agents, and workflows.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TAI42\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tai42.mintlify.app/images/og-image.svg\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"TAI42 — the OS for AI tools\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"An open-source runtime for MCP tools, agents, and workflows.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tai42.mintlify.app/images/og-image.svg\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tai42/Czx60dmBXmcmJLcB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TAI42\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#DC143C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/conversations/search-a-conversation-routes-messages.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tai42.ai/#organization\",\"name\":\"TAI42\",\"url\":\"https://docs.tai42.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tai42/8zNeABFQpXRG0k_n/logo/light.png?fit=max\u0026auto=format\u0026n=8zNeABFQpXRG0k_n\u0026q=85\u0026s=2140f77615492c689d62fcb3a5df2d31\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tai42.ai#website\",\"name\":\"TAI42\",\"url\":\"https://docs.tai42.ai\",\"publisher\":{\"@id\":\"https://docs.tai42.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages#webpage\",\"url\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages\",\"name\":\"Search a conversation route's messages\",\"description\":\"Return every record on route_name whose inbound text or answer contains q, one page at a time. Across ALL the route's threads. The search spans every caller and address on the route, so it is admin-only, and each item is the WHOLE record (the same shape the transcript serves an admin). q is REQUIRED and non-blank. There is no per-route record index, so the search is a BOUNDED nested scan of the route's threads and their records; a page that spent its scan budget answers truncated: true LOUDLY, never a silent cut. Authorization is decided BEFORE the route is looked up, so a non-admin is refused the same way whether the name routes or not. An unknown route is a loud 404 to an admin; a blank q, a page/page_size below 1, or a page above the served maximum, is a 400. Returns {\\\"items\\\", \\\"total\\\", \\\"page\\\", \\\"page_size\\\", \\\"next_page\\\", \\\"truncated\\\", \\\"unreadable\\\"}, where total is the matches the bounded scan found and unreadable counts the scanned members whose row was gone or unparseable.\",\"dateModified\":\"2026-11-05T00:56:35.418Z\",\"isPartOf\":{\"@id\":\"https://docs.tai42.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"HTTP API\",\"item\":\"https://docs.tai42.ai/reference/api/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"conversations\",\"item\":\"https://docs.tai42.ai/api-reference/conversations/list-conversation-target-configs\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Search a conversation route's messages\",\"item\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages#apireference\",\"headline\":\"Search a conversation route's messages\",\"name\":\"Search a conversation route's messages\",\"description\":\"Return every record on route_name whose inbound text or answer contains q, one page at a time. Across ALL the route's threads. The search spans every caller and address on the route, so it is admin-only, and each item is the WHOLE record (the same shape the transcript serves an admin). q is REQUIRED and non-blank. There is no per-route record index, so the search is a BOUNDED nested scan of the route's threads and their records; a page that spent its scan budget answers truncated: true LOUDLY, never a silent cut. Authorization is decided BEFORE the route is looked up, so a non-admin is refused the same way whether the name routes or not. An unknown route is a loud 404 to an admin; a blank q, a page/page_size below 1, or a page above the served maximum, is a 400. Returns {\\\"items\\\", \\\"total\\\", \\\"page\\\", \\\"page_size\\\", \\\"next_page\\\", \\\"truncated\\\", \\\"unreadable\\\"}, where total is the matches the bounded scan found and unreadable counts the scanned members whose row was gone or unparseable.\",\"url\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tai42.ai/api-reference/conversations/search-a-conversation-routes-messages#webpage\"},\"image\":\"https://docs.tai42.ai/images/og-image.svg\",\"dateModified\":\"2026-11-05T00:56:35.418Z\",\"publisher\":{\"@id\":\"https://docs.tai42.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tai42.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TAI42\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TAI42","nav":{"global":null,"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":""}]},{"tab":"Studio","pages":[{"title":"Studio","href":"/studio"}]},{"tab":"Reference","groups":[{"group":"HTTP API","icon":"cloud","pages":[{"title":"HTTP API","icon":"cloud","href":"/reference/api"},{"group":"agents","pages":[{"title":"List every registered agent","deprecated":null,"version":null,"openapi":"/openapi.json get /api/agents","href":"/api-reference/agents/list-every-registered-agent"},{"title":"Stream a run of an authored agent","deprecated":null,"version":null,"openapi":"/openapi.json post /api/agents/authored/{name}/runs","href":"/api-reference/agents/stream-a-run-of-an-authored-agent"},{"title":"List the spec-runnable (authorable) agents","deprecated":null,"version":null,"openapi":"/openapi.json get /api/agents/spec-runnable","href":"/api-reference/agents/list-the-spec-runnable-authorable-agents"},{"title":"Stream a run of an agent","deprecated":null,"version":null,"openapi":"/openapi.json post /api/agents/{name}/runs","href":"/api-reference/agents/stream-a-run-of-an-agent"}]},{"group":"manifest","pages":[{"title":"Add or replace agents config entries and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/agents-config/entries","href":"/api-reference/manifest/add-or-replace-agents-config-entries-and-hot-reload"},{"title":"Remove one agents config entry by title and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/agents-config/entries/{title}","href":"/api-reference/manifest/remove-one-agents-config-entry-by-title-and-hot-reload"},{"title":"Add/remove names on the api_tools include/exclude lists and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/api-tools","href":"/api-reference/manifest/addremove-names-on-the-api_tools-includeexclude-lists-and-hot-reload"},{"title":"Read the PRESERVED manifest MCP section, user tools and extension settings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/manifest","href":"/api-reference/manifest/read-the-preserved-manifest-mcp-section-user-tools-and-extension-settings"},{"title":"List the manifest MCP section's !ENV marker refs (names + set/unset only)","deprecated":null,"version":null,"openapi":"/openapi.json get /api/manifest/mcp-env-refs","href":"/api-reference/manifest/list-the-manifest-mcp-sections-!env-marker-refs-names-+-setunset-only"},{"title":"Read the PRESERVED manifest (markers intact) MCP section, user tools and extension settings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/manifest/preserved","href":"/api-reference/manifest/read-the-preserved-manifest-markers-intact-mcp-section-user-tools-and-extension-settings"},{"title":"Replace the whole manifest, persist, and reload the fleet","deprecated":null,"version":null,"openapi":"/openapi.json post /api/manifest/replace","href":"/api-reference/manifest/replace-the-whole-manifest-persist-and-reload-the-fleet"},{"title":"Replace the MCP config section and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/mcp-config","href":"/api-reference/manifest/replace-the-mcp-config-section-and-hot-reload"},{"title":"Add or replace MCP config entries and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/mcp-config/entries","href":"/api-reference/manifest/add-or-replace-mcp-config-entries-and-hot-reload"},{"title":"Remove one MCP config entry by title and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/mcp-config/entries/{title}","href":"/api-reference/manifest/remove-one-mcp-config-entry-by-title-and-hot-reload"},{"title":"Set an MCP server's tool selection","deprecated":null,"version":null,"openapi":"/openapi.json put /api/mcp-config/entries/{title}/tool-filter","href":"/api-reference/manifest/set-an-mcp-servers-tool-selection"},{"title":"Get the JSON schema for one MCP-config entry","deprecated":null,"version":null,"openapi":"/openapi.json get /api/mcp-config/schema","href":"/api-reference/manifest/get-the-json-schema-for-one-mcp-config-entry"},{"title":"Write a secret env value and its manifest !ENV marker together, then reload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/mcp-config/secret-env","href":"/api-reference/manifest/write-a-secret-env-value-and-its-manifest-!env-marker-together-then-reload"},{"title":"Snapshot the live MCP binding status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/mcp-status","href":"/api-reference/manifest/snapshot-the-live-mcp-binding-status"},{"title":"List MCP servers skipped by the viability check","deprecated":null,"version":null,"openapi":"/openapi.json get /api/mcp-status/failed","href":"/api-reference/manifest/list-mcp-servers-skipped-by-the-viability-check"},{"title":"Re-probe every failed MCP server","deprecated":null,"version":null,"openapi":"/openapi.json post /api/mcp-status/reload-failed","href":"/api-reference/manifest/re-probe-every-failed-mcp-server"},{"title":"List the tools an MCP server advertised at its bind","deprecated":null,"version":null,"openapi":"/openapi.json get /api/mcp-status/{title}/advertised-tools","href":"/api-reference/manifest/list-the-tools-an-mcp-server-advertised-at-its-bind"},{"title":"Detach a single MCP server's tools by title","deprecated":null,"version":null,"openapi":"/openapi.json post /api/mcp-status/{title}/deregister","href":"/api-reference/manifest/detach-a-single-mcp-servers-tools-by-title"},{"title":"Reload a single MCP server by title","deprecated":null,"version":null,"openapi":"/openapi.json post /api/mcp-status/{title}/reload","href":"/api-reference/manifest/reload-a-single-mcp-server-by-title"},{"title":"Add or replace tools config entries and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tools-config/entries","href":"/api-reference/manifest/add-or-replace-tools-config-entries-and-hot-reload"},{"title":"Remove one tools config entry by title and hot-reload","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/tools-config/entries/{title}","href":"/api-reference/manifest/remove-one-tools-config-entry-by-title-and-hot-reload"}]},{"group":"access-control","pages":[{"title":"Create an api key","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/api-keys","href":"/api-reference/access-control/create-an-api-key"},{"title":"Edit an api key","deprecated":null,"version":null,"openapi":"/openapi.json put /api/auth/api-keys/{user_id}","href":"/api-reference/access-control/edit-an-api-key"},{"title":"Revoke an api key","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/auth/api-keys/{user_id}","href":"/api-reference/access-control/revoke-an-api-key"},{"title":"Roll a policy back to a version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/api-keys/{user_id}/policy/rollback","href":"/api-reference/access-control/roll-a-policy-back-to-a-version"},{"title":"List a user's policy version history","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/api-keys/{user_id}/policy/versions","href":"/api-reference/access-control/list-a-users-policy-version-history"},{"title":"Add/remove scopes on an api key","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/api-keys/{user_id}/scopes","href":"/api-reference/access-control/addremove-scopes-on-an-api-key"},{"title":"Report key-mint capabilities","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/capabilities","href":"/api-reference/access-control/report-key-mint-capabilities"},{"title":"Create a one-time claim link for an API key","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/claim-links","href":"/api-reference/access-control/create-a-one-time-claim-link-for-an-api-key"},{"title":"Log out the current session","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/logout","href":"/api-reference/access-control/log-out-the-current-session"},{"title":"The caller's capability projection","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/me","href":"/api-reference/access-control/the-callers-capability-projection"},{"title":"List member actions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/member-actions","href":"/api-reference/access-control/list-member-actions"},{"title":"Invoke a member action","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/member-actions/invoke","href":"/api-reference/access-control/invoke-a-member-action"},{"title":"List members and invites","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/members","href":"/api-reference/access-control/list-members-and-invites"},{"title":"List principals","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/principals","href":"/api-reference/access-control/list-principals"},{"title":"Create a principal","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/principals","href":"/api-reference/access-control/create-a-principal"},{"title":"Update a principal","deprecated":null,"version":null,"openapi":"/openapi.json put /api/auth/principals/{user_id}","href":"/api-reference/access-control/update-a-principal"},{"title":"Delete a principal","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/auth/principals/{user_id}","href":"/api-reference/access-control/delete-a-principal"},{"title":"List public-pinned routes","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/public-routes","href":"/api-reference/access-control/list-public-pinned-routes"},{"title":"Pin a route public","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/public-routes","href":"/api-reference/access-control/pin-a-route-public"},{"title":"Unpin a public route","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/auth/public-routes","href":"/api-reference/access-control/unpin-a-public-route"},{"title":"List roles","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/roles","href":"/api-reference/access-control/list-roles"},{"title":"Create a role","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/roles","href":"/api-reference/access-control/create-a-role"},{"title":"Edit a role's grant map","deprecated":null,"version":null,"openapi":"/openapi.json put /api/auth/roles/{name}","href":"/api-reference/access-control/edit-a-roles-grant-map"},{"title":"Delete a role","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/auth/roles/{name}","href":"/api-reference/access-control/delete-a-role"},{"title":"Set/remove single tag grants on a role","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/roles/{name}/grants","href":"/api-reference/access-control/setremove-single-tag-grants-on-a-role"},{"title":"Roll a role back to a version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/roles/{name}/rollback","href":"/api-reference/access-control/roll-a-role-back-to-a-version"},{"title":"A role's version history + audit trail","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/roles/{name}/versions","href":"/api-reference/access-control/a-roles-version-history-+-audit-trail"},{"title":"List the app's HTTP routes and their scope mappings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/routes","href":"/api-reference/access-control/list-the-apps-http-routes-and-their-scope-mappings"},{"title":"List all scopes","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/scopes","href":"/api-reference/access-control/list-all-scopes"},{"title":"Add a URL to a scope","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/scopes","href":"/api-reference/access-control/add-a-url-to-a-scope"},{"title":"Remove a URL from all scopes","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/auth/scopes/urls","href":"/api-reference/access-control/remove-a-url-from-all-scopes"},{"title":"Delete a scope","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/auth/scopes/{scope_id}","href":"/api-reference/access-control/delete-a-scope"},{"title":"List api-key token payloads","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/tokens-payload","href":"/api-reference/access-control/list-api-key-token-payloads"},{"title":"Validate a jq policy condition","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/validate-condition","href":"/api-reference/access-control/validate-a-jq-policy-condition"},{"title":"Initialize the deployment (owner + first key)","deprecated":null,"version":null,"openapi":"/openapi.json post /api/setup","href":"/api-reference/access-control/initialize-the-deployment-owner-+-first-key"}]},{"group":"backend","pages":[{"title":"Get the backend identity","deprecated":null,"version":null,"openapi":"/openapi.json get /api/backend","href":"/api-reference/backend/get-the-backend-identity"},{"title":"Soft-restart the worker fleet, restarting the drifted workers whose reload built","deprecated":null,"version":null,"openapi":"/openapi.json post /api/fleet/reload-config","href":"/api-reference/backend/soft-restart-the-worker-fleet-restarting-the-drifted-workers-whose-reload-built"},{"title":"List the worker fleet","deprecated":null,"version":null,"openapi":"/openapi.json get /api/fleet/workers","href":"/api-reference/backend/list-the-worker-fleet"}]},{"group":"backup","pages":[{"title":"Export the named backup sections","deprecated":null,"version":null,"openapi":"/openapi.json post /api/backup/export","href":"/api-reference/backup/export-the-named-backup-sections"},{"title":"Import a backup document","deprecated":null,"version":null,"openapi":"/openapi.json post /api/backup/import","href":"/api-reference/backup/import-a-backup-document"},{"title":"List backup sections","deprecated":null,"version":null,"openapi":"/openapi.json get /api/backup/sections","href":"/api-reference/backup/list-backup-sections"}]},{"group":"channels","pages":[{"title":"List registered channels","deprecated":null,"version":null,"openapi":"/openapi.json get /api/channels","href":"/api-reference/channels/list-registered-channels"}]},{"group":"checkpoints","pages":[{"title":"Sweep expired checkpoint threads","deprecated":null,"version":null,"openapi":"/openapi.json post /api/checkpoints/sweep","href":"/api-reference/checkpoints/sweep-expired-checkpoint-threads"}]},{"group":"templates","pages":[{"title":"Clear the template render cache","deprecated":null,"version":null,"openapi":"/openapi.json post /api/clear-templates-cache","href":"/api-reference/templates/clear-the-template-render-cache"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"/openapi.json post /api/delete-template","href":"/api-reference/templates/delete-a-template"},{"title":"Delete a template directory","deprecated":null,"version":null,"openapi":"/openapi.json post /api/delete-template-dir","href":"/api-reference/templates/delete-a-template-directory"},{"title":"Render a template","deprecated":null,"version":null,"openapi":"/openapi.json post /api/render-template","href":"/api-reference/templates/render-a-template"},{"title":"Read a stored object as a template entry with its inferred input schema","deprecated":null,"version":null,"openapi":"/openapi.json post /api/template","href":"/api-reference/templates/read-a-stored-object-as-a-template-entry-with-its-inferred-input-schema"},{"title":"List templates","deprecated":null,"version":null,"openapi":"/openapi.json get /api/templates","href":"/api-reference/templates/list-templates"},{"title":"Upload a template","deprecated":null,"version":null,"openapi":"/openapi.json post /api/upload-template","href":"/api-reference/templates/upload-a-template"}]},{"group":"config","pages":[{"title":"Read the stored env config, secret-key marks and the stored keys the deployment sets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/env","href":"/api-reference/config/read-the-stored-env-config-secret-key-marks-and-the-stored-keys-the-deployment-sets"},{"title":"Merge env changes into the stored env and reload the fleet","deprecated":null,"version":null,"openapi":"/openapi.json post /api/config/env","href":"/api-reference/config/merge-env-changes-into-the-stored-env-and-reload-the-fleet"},{"title":"Read the active config backend mode","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/mode","href":"/api-reference/config/read-the-active-config-backend-mode"},{"title":"List settings profiles","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/profiles","href":"/api-reference/config/list-settings-profiles"},{"title":"Get a settings profile","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/profiles/{name}","href":"/api-reference/config/get-a-settings-profile"},{"title":"Create or update a settings profile","deprecated":null,"version":null,"openapi":"/openapi.json put /api/config/profiles/{name}","href":"/api-reference/config/create-or-update-a-settings-profile"},{"title":"Delete a settings profile","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/config/profiles/{name}","href":"/api-reference/config/delete-a-settings-profile"},{"title":"Apply a settings profile — replace the stored env and reload the fleet","deprecated":null,"version":null,"openapi":"/openapi.json post /api/config/profiles/{name}/apply","href":"/api-reference/config/apply-a-settings-profile-—-replace-the-stored-env-and-reload-the-fleet"},{"title":"Diff a settings profile against the stored env","deprecated":null,"version":null,"openapi":"/openapi.json post /api/config/profiles/{name}/diff","href":"/api-reference/config/diff-a-settings-profile-against-the-stored-env"},{"title":"Roll a settings profile back to a version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/config/profiles/{name}/rollback","href":"/api-reference/config/roll-a-settings-profile-back-to-a-version"},{"title":"List a settings profile's versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/profiles/{name}/versions","href":"/api-reference/config/list-a-settings-profiles-versions"},{"title":"Get a settings profile version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/profiles/{name}/versions/{version}","href":"/api-reference/config/get-a-settings-profile-version"},{"title":"Soft-restart the fleet from its manifest, restarting the drifted workers whose reload built","deprecated":null,"version":null,"openapi":"/openapi.json post /api/config/reload","href":"/api-reference/config/soft-restart-the-fleet-from-its-manifest-restarting-the-drifted-workers-whose-reload-built"},{"title":"List settings groups with their resolved field values","deprecated":null,"version":null,"openapi":"/openapi.json get /api/config/settings-schema","href":"/api-reference/config/list-settings-groups-with-their-resolved-field-values"}]},{"group":"connectors","pages":[{"title":"List connections","deprecated":null,"version":null,"openapi":"/openapi.json get /api/connectors/connections","href":"/api-reference/connectors/list-connections"},{"title":"Start a connection flow","deprecated":null,"version":null,"openapi":"/openapi.json post /api/connectors/connections/start","href":"/api-reference/connectors/start-a-connection-flow"},{"title":"Get a connection","deprecated":null,"version":null,"openapi":"/openapi.json get /api/connectors/connections/{connection_id}","href":"/api-reference/connectors/get-a-connection"},{"title":"Disconnect a connection","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/connectors/connections/{connection_id}","href":"/api-reference/connectors/disconnect-a-connection"},{"title":"Start a reconnect flow","deprecated":null,"version":null,"openapi":"/openapi.json post /api/connectors/connections/{connection_id}/reconnect","href":"/api-reference/connectors/start-a-reconnect-flow"},{"title":"Patch a connection's enabled sub-services","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/connectors/connections/{connection_id}/sub-services","href":"/api-reference/connectors/patch-a-connections-enabled-sub-services"},{"title":"Complete an OAuth connection flow","deprecated":null,"version":null,"openapi":"/openapi.json post /api/connectors/oauth/complete","href":"/api-reference/connectors/complete-an-oauth-connection-flow"},{"title":"List connector providers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/connectors/providers","href":"/api-reference/connectors/list-connector-providers"},{"title":"Add an MCP server as a connector provider","deprecated":null,"version":null,"openapi":"/openapi.json post /api/connectors/providers","href":"/api-reference/connectors/add-an-mcp-server-as-a-connector-provider"},{"title":"Look up an MCP server's sign-in","deprecated":null,"version":null,"openapi":"/openapi.json post /api/connectors/providers/discover","href":"/api-reference/connectors/look-up-an-mcp-servers-sign-in"},{"title":"Remove a connector provider added by its address","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/connectors/providers/{provider_id}","href":"/api-reference/connectors/remove-a-connector-provider-added-by-its-address"},{"title":"Set the client credentials of a connector provider","deprecated":null,"version":null,"openapi":"/openapi.json put /api/connectors/providers/{provider_id}/client","href":"/api-reference/connectors/set-the-client-credentials-of-a-connector-provider"},{"title":"Re-encrypt connector tokens and client credentials under the current KEK","deprecated":null,"version":null,"openapi":"/openapi.json post /api/connectors/tokens/reencrypt","href":"/api-reference/connectors/re-encrypt-connector-tokens-and-client-credentials-under-the-current-kek"}]},{"group":"conversations","pages":[{"title":"List conversation target configs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversation-configs","href":"/api-reference/conversations/list-conversation-target-configs"},{"title":"Get a conversation target config","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversation-configs/{target_kind}/{target_name}","href":"/api-reference/conversations/get-a-conversation-target-config"},{"title":"Create or replace a conversation target config","deprecated":null,"version":null,"openapi":"/openapi.json put /api/conversation-configs/{target_kind}/{target_name}","href":"/api-reference/conversations/create-or-replace-a-conversation-target-config"},{"title":"Delete a conversation target config","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/conversation-configs/{target_kind}/{target_name}","href":"/api-reference/conversations/delete-a-conversation-target-config"},{"title":"List conversation routes","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations","href":"/api-reference/conversations/list-conversation-routes"},{"title":"List failed conversation deliveries","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/messages/failed","href":"/api-reference/conversations/list-failed-conversation-deliveries"},{"title":"Read a conversation person","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/persons/{person_id}","href":"/api-reference/conversations/read-a-conversation-person"},{"title":"Delete a conversation person","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/conversations/persons/{person_id}","href":"/api-reference/conversations/delete-a-conversation-person"},{"title":"Set a conversation person's locale","deprecated":null,"version":null,"openapi":"/openapi.json put /api/conversations/persons/{person_id}/locale","href":"/api-reference/conversations/set-a-conversation-persons-locale"},{"title":"Get a conversation route","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}","href":"/api-reference/conversations/get-a-conversation-route"},{"title":"Create or replace a conversation route","deprecated":null,"version":null,"openapi":"/openapi.json post /api/conversations/{route_name}","href":"/api-reference/conversations/create-or-replace-a-conversation-route"},{"title":"Delete a conversation route","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/conversations/{route_name}","href":"/api-reference/conversations/delete-a-conversation-route"},{"title":"Deliver a structured event to a conversation thread as a turn","deprecated":null,"version":null,"openapi":"/openapi.json post /api/conversations/{route_name}/events","href":"/api-reference/conversations/deliver-a-structured-event-to-a-conversation-thread-as-a-turn"},{"title":"Send a message to a conversation route","description":"Accept one authed message for ``route_name`` and run its turn AS the route's execution key.\n\nThe auth gate authorizes who may SEND; the turn's own authority is the route's\nexecution key, not the caller. Default answer is ``202 {message_id, thread_id}``; the\nanswer is then delivered later by signed callback when the route declares a\n``callback_url``, and otherwise read back from the poll door\n(``GET .../messages/{message_id}``). With a ``wait_seconds`` body field (clamped to\n``sync_wait_max_seconds``) a turn finishing in time answers ``200`` inline — an\nanswered/error turn with the answer, a silent turn with the silent marker (status\n``silent``, no answer text) — and any callback (which otherwise carries\nanswered/error/silent) is suppressed the same way, so it never double-fires; a turn\nstill running when the wait elapses falls back to ``202``. The inline ``200`` is taken\nonly while the client is still connected — a caller that hung up during the wait gets its\nanswer by the route's signed callback (or its terminal poll record), never a write to a\nclosed socket.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/conversations/{route_name}/messages","href":"/api-reference/conversations/send-a-message-to-a-conversation-route"},{"title":"Search a conversation route's messages","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/messages/search","href":"/api-reference/conversations/search-a-conversation-routes-messages"},{"title":"Read one conversation answer record","description":"One conversation answer record by ``message_id`` under ``route_name``.\n\nA missing record or one on another route is a 404. An admin reads the whole record; a\nnon-admin reads the caller-safe projection, which withholds the internal detail of the\nroute key's run.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/messages/{message_id}","href":"/api-reference/conversations/read-one-conversation-answer-record"},{"title":"Delete a conversation thread","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/conversations/{route_name}/thread","href":"/api-reference/conversations/delete-a-conversation-thread"},{"title":"Send an operator message into a conversation thread","deprecated":null,"version":null,"openapi":"/openapi.json post /api/conversations/{route_name}/thread/messages","href":"/api-reference/conversations/send-an-operator-message-into-a-conversation-thread"},{"title":"Read a conversation thread's control mode","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/thread/mode","href":"/api-reference/conversations/read-a-conversation-threads-control-mode"},{"title":"Set a conversation thread's control mode","deprecated":null,"version":null,"openapi":"/openapi.json put /api/conversations/{route_name}/thread/mode","href":"/api-reference/conversations/set-a-conversation-threads-control-mode"},{"title":"List a conversation route's threads","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/threads","href":"/api-reference/conversations/list-a-conversation-routes-threads"},{"title":"Read a conversation thread's transcript","deprecated":null,"version":null,"openapi":"/openapi.json get /api/conversations/{route_name}/transcript","href":"/api-reference/conversations/read-a-conversation-threads-transcript"}]},{"group":"extensions","pages":[{"title":"List every registered extension","deprecated":null,"version":null,"openapi":"/openapi.json get /api/extensions","href":"/api-reference/extensions/list-every-registered-extension"},{"title":"Get a tool's applied extension combos","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tools/{name}/extensions","href":"/api-reference/extensions/get-a-tools-applied-extension-combos"},{"title":"Set a tool's applied extension combos","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tools/{name}/extensions","href":"/api-reference/extensions/set-a-tools-applied-extension-combos"},{"title":"Add or remove single extension combos on a tool","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tools/{name}/extensions/combos","href":"/api-reference/extensions/add-or-remove-single-extension-combos-on-a-tool"}]},{"group":"hooks","pages":[{"title":"List hook runs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/hook-runs","href":"/api-reference/hooks/list-hook-runs"},{"title":"Discard a failed hook run","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/hook-runs/{id}","href":"/api-reference/hooks/discard-a-failed-hook-run"},{"title":"Retry a failed hook run","deprecated":null,"version":null,"openapi":"/openapi.json post /api/hook-runs/{id}/retry","href":"/api-reference/hooks/retry-a-failed-hook-run"},{"title":"List registered hooks","deprecated":null,"version":null,"openapi":"/openapi.json get /api/hooks","href":"/api-reference/hooks/list-registered-hooks"},{"title":"Register a hook","deprecated":null,"version":null,"openapi":"/openapi.json post /api/hooks","href":"/api-reference/hooks/register-a-hook"},{"title":"Bind a webhook verifier to a topic","deprecated":null,"version":null,"openapi":"/openapi.json put /api/hooks/topics/{topic}/verifier","href":"/api-reference/hooks/bind-a-webhook-verifier-to-a-topic"},{"title":"Unbind a topic's webhook verifier","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/hooks/topics/{topic}/verifier","href":"/api-reference/hooks/unbind-a-topics-webhook-verifier"},{"title":"List trigger links","deprecated":null,"version":null,"openapi":"/openapi.json get /api/hooks/trigger-links","href":"/api-reference/hooks/list-trigger-links"},{"title":"Create a trigger link","deprecated":null,"version":null,"openapi":"/openapi.json post /api/hooks/trigger-links","href":"/api-reference/hooks/create-a-trigger-link"},{"title":"Delete a trigger link","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/hooks/trigger-links/{name}","href":"/api-reference/hooks/delete-a-trigger-link"},{"title":"List registered webhook verifiers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/hooks/verifiers","href":"/api-reference/hooks/list-registered-webhook-verifiers"},{"title":"Unregister a hook","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/hooks/{name}","href":"/api-reference/hooks/unregister-a-hook"}]},{"group":"interactions","pages":[{"title":"List pending interactions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/interactions","href":"/api-reference/interactions/list-pending-interactions"},{"title":"External interaction callback door","deprecated":null,"version":null,"openapi":"/openapi.json get /api/interactions/callback/{ticket}","href":"/api-reference/interactions/external-interaction-callback-door"},{"title":"External interaction callback door","deprecated":null,"version":null,"openapi":"/openapi.json post /api/interactions/callback/{ticket}","href":"/api-reference/interactions/external-interaction-callback-door-1"},{"title":"External interaction mid-form reaction door","deprecated":null,"version":null,"openapi":"/openapi.json post /api/interactions/callback/{ticket}/react","href":"/api-reference/interactions/external-interaction-mid-form-reaction-door"},{"title":"Serve interaction media stored by reference","deprecated":null,"version":null,"openapi":"/openapi.json get /api/interactions/media/{media_id}","href":"/api-reference/interactions/serve-interaction-media-stored-by-reference"},{"title":"Serve interaction media stored by reference","deprecated":null,"version":null,"openapi":"/openapi.json head /api/interactions/media/{media_id}","href":"/api-reference/interactions/serve-interaction-media-stored-by-reference-1"},{"title":"List parked (async) interactions awaiting an answer","deprecated":null,"version":null,"openapi":"/openapi.json get /api/interactions/pending","href":"/api-reference/interactions/list-parked-async-interactions-awaiting-an-answer"},{"title":"Stream the interactions inbox live tail","deprecated":null,"version":null,"openapi":"/openapi.json get /api/interactions/stream","href":"/api-reference/interactions/stream-the-interactions-inbox-live-tail"},{"title":"Answer a pending interaction","deprecated":null,"version":null,"openapi":"/openapi.json post /api/interactions/{interaction_id}/answer","href":"/api-reference/interactions/answer-a-pending-interaction"},{"title":"Cancel a pending interaction","deprecated":null,"version":null,"openapi":"/openapi.json post /api/interactions/{interaction_id}/cancel","href":"/api-reference/interactions/cancel-a-pending-interaction"},{"title":"React to an open form interaction","deprecated":null,"version":null,"openapi":"/openapi.json post /api/interactions/{interaction_id}/react","href":"/api-reference/interactions/react-to-an-open-form-interaction"}]},{"group":"login","pages":[{"title":"Exchange a one-time claim token for its API key","deprecated":null,"version":null,"openapi":"/openapi.json post /api/login/claim","href":"/api-reference/login/exchange-a-one-time-claim-token-for-its-api-key"},{"title":"List available login methods","deprecated":null,"version":null,"openapi":"/openapi.json get /api/login/methods","href":"/api-reference/login/list-available-login-methods"}]},{"group":"marketplace","pages":[{"title":"Get advisories for installed plugins","deprecated":null,"version":null,"openapi":"/openapi.json get /api/marketplace/advisories","href":"/api-reference/marketplace/get-advisories-for-installed-plugins"},{"title":"List marketplace categories","deprecated":null,"version":null,"openapi":"/openapi.json get /api/marketplace/categories","href":"/api-reference/marketplace/list-marketplace-categories"},{"title":"Install a marketplace plugin","deprecated":null,"version":null,"openapi":"/openapi.json post /api/marketplace/install","href":"/api-reference/marketplace/install-a-marketplace-plugin"},{"title":"Preview a marketplace install","deprecated":null,"version":null,"openapi":"/openapi.json post /api/marketplace/install/preview","href":"/api-reference/marketplace/preview-a-marketplace-install"},{"title":"List installed marketplace plugins","deprecated":null,"version":null,"openapi":"/openapi.json get /api/marketplace/installed","href":"/api-reference/marketplace/list-installed-marketplace-plugins"},{"title":"List marketplace item kinds","deprecated":null,"version":null,"openapi":"/openapi.json get /api/marketplace/kinds","href":"/api-reference/marketplace/list-marketplace-item-kinds"},{"title":"Get a marketplace listing's detail","deprecated":null,"version":null,"openapi":"/openapi.json get /api/marketplace/plugins/{ns}/{name}","href":"/api-reference/marketplace/get-a-marketplace-listings-detail"},{"title":"Search the marketplace","deprecated":null,"version":null,"openapi":"/openapi.json get /api/marketplace/search","href":"/api-reference/marketplace/search-the-marketplace"},{"title":"Uninstall a marketplace plugin","deprecated":null,"version":null,"openapi":"/openapi.json post /api/marketplace/uninstall","href":"/api-reference/marketplace/uninstall-a-marketplace-plugin"},{"title":"Update a marketplace plugin","deprecated":null,"version":null,"openapi":"/openapi.json post /api/marketplace/update","href":"/api-reference/marketplace/update-a-marketplace-plugin"},{"title":"Upgrade all installed marketplace plugins","deprecated":null,"version":null,"openapi":"/openapi.json post /api/marketplace/upgrade-all","href":"/api-reference/marketplace/upgrade-all-installed-marketplace-plugins"}]},{"group":"notifications","pages":[{"title":"List internal notifications","deprecated":null,"version":null,"openapi":"/openapi.json get /api/notifications","href":"/api-reference/notifications/list-internal-notifications"},{"title":"Send a human a one-way notification","deprecated":null,"version":null,"openapi":"/openapi.json post /api/notifications","href":"/api-reference/notifications/send-a-human-a-one-way-notification"}]},{"group":"observability","pages":[{"title":"Get the monitoring backend's observability capabilities","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/capabilities","href":"/api-reference/observability/get-the-monitoring-backends-observability-capabilities"},{"title":"Query observability metrics","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/metrics","href":"/api-reference/observability/query-observability-metrics"},{"title":"List observability runs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/runs","href":"/api-reference/observability/list-observability-runs"},{"title":"Export runs as a CSV download","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/runs/export","href":"/api-reference/observability/export-runs-as-a-csv-download"},{"title":"Get a run span's resolved value","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/runs/{trace_id}/spans/{span_id}/resolved","href":"/api-reference/observability/get-a-run-spans-resolved-value"},{"title":"Get a run's trace","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/runs/{trace_id}/trace","href":"/api-reference/observability/get-a-runs-trace"},{"title":"Export a run's trace as a JSON download","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/runs/{trace_id}/trace/export","href":"/api-reference/observability/export-a-runs-trace-as-a-json-download"},{"title":"Get a run's trace outline","deprecated":null,"version":null,"openapi":"/openapi.json get /api/observability/runs/{trace_id}/trace/outline","href":"/api-reference/observability/get-a-runs-trace-outline"}]},{"group":"plugins","pages":[{"title":"List the registered studio plugins","deprecated":null,"version":null,"openapi":"/openapi.json get /api/plugins","href":"/api-reference/plugins/list-the-registered-studio-plugins"},{"title":"Serve a studio plugin asset","deprecated":null,"version":null,"openapi":"/openapi.json get /api/plugins/{name}/studio/{path}","href":"/api-reference/plugins/serve-a-studio-plugin-asset"}]},{"group":"presets","pages":[{"title":"List presets","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presets","href":"/api-reference/presets/list-presets"},{"title":"Create a preset","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presets","href":"/api-reference/presets/create-a-preset"},{"title":"Validate a preset draft (dry-run)","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presets/validate","href":"/api-reference/presets/validate-a-preset-draft-dry-run"},{"title":"Get a preset","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presets/{name}","href":"/api-reference/presets/get-a-preset"},{"title":"Delete a preset","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/presets/{name}","href":"/api-reference/presets/delete-a-preset"},{"title":"List live holders of this preset","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presets/{name}/referees","href":"/api-reference/presets/list-live-holders-of-this-preset"},{"title":"Rename a preset","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presets/{name}/rename","href":"/api-reference/presets/rename-a-preset"},{"title":"Roll a preset back to a version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presets/{name}/rollback","href":"/api-reference/presets/roll-a-preset-back-to-a-version"},{"title":"List a preset's versions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presets/{name}/versions","href":"/api-reference/presets/list-a-presets-versions"},{"title":"Save a new preset version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presets/{name}/versions","href":"/api-reference/presets/save-a-new-preset-version"},{"title":"Get a specific preset version","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presets/{name}/versions/{version}","href":"/api-reference/presets/get-a-specific-preset-version"},{"title":"Set a preset version's tags","deprecated":null,"version":null,"openapi":"/openapi.json put /api/presets/{name}/versions/{version}/tags","href":"/api-reference/presets/set-a-preset-versions-tags"}]},{"group":"resources","pages":[{"title":"Load a stored resource by id, optionally rendering it","deprecated":null,"version":null,"openapi":"/openapi.json get /api/resources/get","href":"/api-reference/resources/load-a-stored-resource-by-id-optionally-rendering-it"},{"title":"Load a stored resource by id, optionally rendering it","deprecated":null,"version":null,"openapi":"/openapi.json post /api/resources/get","href":"/api-reference/resources/load-a-stored-resource-by-id-optionally-rendering-it-1"}]},{"group":"tools","pages":[{"title":"Run a registered tool synchronously","deprecated":null,"version":null,"openapi":"/openapi.json post /api/run-tool","href":"/api-reference/tools/run-a-registered-tool-synchronously"},{"title":"List the registered tool names","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tools","href":"/api-reference/tools/list-the-registered-tool-names"},{"title":"Get the input/output schema of every tool","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tools-schema","href":"/api-reference/tools/get-the-inputoutput-schema-of-every-tool"},{"title":"Reload one app tool from its stored definition","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tools/reload","href":"/api-reference/tools/reload-one-app-tool-from-its-stored-definition"},{"title":"Remove one app tool from the live registry","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tools/remove","href":"/api-reference/tools/remove-one-app-tool-from-the-live-registry"},{"title":"List each tool's description, native tags, declared visibility, and badges","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tools/tags","href":"/api-reference/tools/list-each-tools-description-native-tags-declared-visibility-and-badges"},{"title":"Get one tool's input/output schema","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tools/{tool_name}/schema","href":"/api-reference/tools/get-one-tools-inputoutput-schema"}]},{"group":"runs","pages":[{"title":"List platform runs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/runs","href":"/api-reference/runs/list-platform-runs"},{"title":"Prune the platform runs index","deprecated":null,"version":null,"openapi":"/openapi.json post /api/runs/prune","href":"/api-reference/runs/prune-the-platform-runs-index"}]},{"group":"sandbox","pages":[{"title":"Get the sandbox identity and resolved policy","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sandbox","href":"/api-reference/sandbox/get-the-sandbox-identity-and-resolved-policy"}]},{"group":"schedules","pages":[{"title":"List schedules","deprecated":null,"version":null,"openapi":"/openapi.json get /api/schedules","href":"/api-reference/schedules/list-schedules"},{"title":"Create a schedule","deprecated":null,"version":null,"openapi":"/openapi.json post /api/schedules","href":"/api-reference/schedules/create-a-schedule"},{"title":"Get the server date and time","deprecated":null,"version":null,"openapi":"/openapi.json get /api/schedules/server-datetime","href":"/api-reference/schedules/get-the-server-date-and-time"},{"title":"Delete a schedule","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/schedules/{schedule_name}","href":"/api-reference/schedules/delete-a-schedule"}]},{"group":"states","pages":[{"title":"List pending state saves","deprecated":null,"version":null,"openapi":"/openapi.json get /api/state-pending-saves","href":"/api-reference/states/list-pending-state-saves"},{"title":"Discard a failed pending state save","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/state-pending-saves/{id}","href":"/api-reference/states/discard-a-failed-pending-state-save"},{"title":"Retry a failed pending state save","deprecated":null,"version":null,"openapi":"/openapi.json post /api/state-pending-saves/{id}/retry","href":"/api-reference/states/retry-a-failed-pending-state-save"},{"title":"Prune expired state records","deprecated":null,"version":null,"openapi":"/openapi.json post /api/state-retention/prune","href":"/api-reference/states/prune-expired-state-records"},{"title":"List state templates","deprecated":null,"version":null,"openapi":"/openapi.json get /api/state-templates","href":"/api-reference/states/list-state-templates"},{"title":"Get a state template","deprecated":null,"version":null,"openapi":"/openapi.json get /api/state-templates/{name}","href":"/api-reference/states/get-a-state-template"},{"title":"Create or replace a state template","deprecated":null,"version":null,"openapi":"/openapi.json put /api/state-templates/{name}","href":"/api-reference/states/create-or-replace-a-state-template"},{"title":"Delete a state template","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/state-templates/{name}","href":"/api-reference/states/delete-a-state-template"},{"title":"List declared states","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states","href":"/api-reference/states/list-declared-states"},{"title":"Get a state","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}","href":"/api-reference/states/get-a-state"},{"title":"Create or re-declare a state","deprecated":null,"version":null,"openapi":"/openapi.json put /api/states/{name}","href":"/api-reference/states/create-or-re-declare-a-state"},{"title":"Delete a state","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/states/{name}","href":"/api-reference/states/delete-a-state"},{"title":"List a state's attachments","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/attachments","href":"/api-reference/states/list-a-states-attachments"},{"title":"Get a state's attachment","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/attachments/{template}","href":"/api-reference/states/get-a-states-attachment"},{"title":"Attach a template on a state","deprecated":null,"version":null,"openapi":"/openapi.json put /api/states/{name}/attachments/{template}","href":"/api-reference/states/attach-a-template-on-a-state"},{"title":"Detach a template from a state","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/states/{name}/attachments/{template}","href":"/api-reference/states/detach-a-template-from-a-state"},{"title":"Update an attachment's declarations","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/states/{name}/attachments/{template}","href":"/api-reference/states/update-an-attachments-declarations"},{"title":"List live holders of a state's template attachment","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/attachments/{template}/referees","href":"/api-reference/states/list-live-holders-of-a-states-template-attachment"},{"title":"A state's consumers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/consumers","href":"/api-reference/states/a-states-consumers"},{"title":"Check a state's stored records against its schema","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/records/check","href":"/api-reference/states/check-a-states-stored-records-against-its-schema"},{"title":"Search a state's records","deprecated":null,"version":null,"openapi":"/openapi.json post /api/states/{name}/records/search","href":"/api-reference/states/search-a-states-records"},{"title":"Validate a candidate record against a state's schema","deprecated":null,"version":null,"openapi":"/openapi.json post /api/states/{name}/records/validate","href":"/api-reference/states/validate-a-candidate-record-against-a-states-schema"},{"title":"Read a subject's record","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}","href":"/api-reference/states/read-a-subjects-record"},{"title":"Replace a subject's record","deprecated":null,"version":null,"openapi":"/openapi.json put /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}","href":"/api-reference/states/replace-a-subjects-record"},{"title":"Erase a subject's record","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}","href":"/api-reference/states/erase-a-subjects-record"},{"title":"Merge into a subject's record","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}","href":"/api-reference/states/merge-into-a-subjects-record"},{"title":"Apply ops to a subject's record","deprecated":null,"version":null,"openapi":"/openapi.json post /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}/deltas","href":"/api-reference/states/apply-ops-to-a-subjects-record"},{"title":"Fold one subject into another","deprecated":null,"version":null,"openapi":"/openapi.json post /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}/fold","href":"/api-reference/states/fold-one-subject-into-another"},{"title":"Evaluate an input-purpose template_jq program for a subject","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}/template-jq/{program}","href":"/api-reference/states/evaluate-an-input-purpose-template_jq-program-for-a-subject"},{"title":"Apply an update-purpose template_jq program to a subject's record","deprecated":null,"version":null,"openapi":"/openapi.json post /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}/template-jq/{program}","href":"/api-reference/states/apply-an-update-purpose-template_jq-program-to-a-subjects-record"},{"title":"A subject's write audit trail","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/records/{target_kind}/{target_name}/{kind}/{key}/writes","href":"/api-reference/states/a-subjects-write-audit-trail"},{"title":"A state's record statistics","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/stats","href":"/api-reference/states/a-states-record-statistics"},{"title":"List a state's subjects","deprecated":null,"version":null,"openapi":"/openapi.json get /api/states/{name}/subjects","href":"/api-reference/states/list-a-states-subjects"}]},{"group":"storage","pages":[{"title":"Get the storage provider identity","deprecated":null,"version":null,"openapi":"/openapi.json get /api/storage","href":"/api-reference/storage/get-the-storage-provider-identity"},{"title":"Delete a storage directory","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/storage/dirs/{dir_path}","href":"/api-reference/storage/delete-a-storage-directory"},{"title":"Read a stored object as a text, document or binary entry","deprecated":null,"version":null,"openapi":"/openapi.json get /api/storage/entries/{resource_id}","href":"/api-reference/storage/read-a-stored-object-as-a-text-document-or-binary-entry"},{"title":"List storage resources","deprecated":null,"version":null,"openapi":"/openapi.json get /api/storage/resources","href":"/api-reference/storage/list-storage-resources"},{"title":"Upload a storage resource","deprecated":null,"version":null,"openapi":"/openapi.json post /api/storage/resources","href":"/api-reference/storage/upload-a-storage-resource"},{"title":"Delete a storage resource","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/storage/resources/{resource_id}","href":"/api-reference/storage/delete-a-storage-resource"},{"title":"Download a storage resource","deprecated":null,"version":null,"openapi":"/openapi.json get /api/storage/resources/{resource_id}/content","href":"/api-reference/storage/download-a-storage-resource"},{"title":"Stat a storage resource","deprecated":null,"version":null,"openapi":"/openapi.json get /api/storage/resources/{resource_id}/stat","href":"/api-reference/storage/stat-a-storage-resource"}]},{"group":"sub-mcp","pages":[{"title":"List the registered sub-MCP apps","deprecated":null,"version":null,"openapi":"/openapi.json get /api/sub-mcp","href":"/api-reference/sub-mcp/list-the-registered-sub-mcp-apps"},{"title":"Register or reload a sub-MCP app","deprecated":null,"version":null,"openapi":"/openapi.json post /api/sub-mcp","href":"/api-reference/sub-mcp/register-or-reload-a-sub-mcp-app"},{"title":"Unregister a sub-MCP app","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/sub-mcp/{slug}","href":"/api-reference/sub-mcp/unregister-a-sub-mcp-app"}]},{"group":"system","pages":[{"title":"List pluggable-kind status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/system/kinds","href":"/api-reference/system/list-pluggable-kind-status"}]},{"group":"tool_meta","pages":[{"title":"List the tool-metadata overlay","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tool-meta","href":"/api-reference/tool_meta/list-the-tool-metadata-overlay"},{"title":"Create a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tool-meta/folders","href":"/api-reference/tool_meta/create-a-folder"},{"title":"Delete a folder","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/tool-meta/folders/{folder_id}","href":"/api-reference/tool_meta/delete-a-folder"},{"title":"Move a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tool-meta/folders/{folder_id}/move","href":"/api-reference/tool_meta/move-a-folder"},{"title":"Rename a folder","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tool-meta/folders/{folder_id}/rename","href":"/api-reference/tool_meta/rename-a-folder"},{"title":"Delete a tool's overlay row","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/tool-meta/tools/{tool_name}","href":"/api-reference/tool_meta/delete-a-tools-overlay-row"},{"title":"Upsert a tool's overlay","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/tool-meta/tools/{tool_name}","href":"/api-reference/tool_meta/upsert-a-tools-overlay"}]},{"group":"tool-runs","pages":[{"title":"List background tool runs for a tool","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tool-runs","href":"/api-reference/tool-runs/list-background-tool-runs-for-a-tool"},{"title":"Submit a tool for background execution","deprecated":null,"version":null,"openapi":"/openapi.json post /api/tool-runs","href":"/api-reference/tool-runs/submit-a-tool-for-background-execution"},{"title":"Get a background tool run's status and result","deprecated":null,"version":null,"openapi":"/openapi.json get /api/tool-runs/{run_id}","href":"/api-reference/tool-runs/get-a-background-tool-runs-status-and-result"}]}]},{"group":"CLI","icon":"terminal","pages":[{"title":"CLI","icon":"terminal","href":"/reference/cli/index"},{"title":"tai agents","icon":"terminal","href":"/reference/cli/agents"},{"title":"tai auth","icon":"terminal","href":"/reference/cli/auth"},{"title":"tai backend","icon":"terminal","href":"/reference/cli/backend"},{"title":"tai backup","icon":"terminal","href":"/reference/cli/backup"},{"title":"tai catalog","icon":"terminal","href":"/reference/cli/catalog"},{"title":"tai channels","icon":"terminal","href":"/reference/cli/channels"},{"title":"tai checkpoints","icon":"terminal","href":"/reference/cli/checkpoints"},{"title":"tai completion","icon":"terminal","href":"/reference/cli/completion"},{"title":"tai config","icon":"terminal","href":"/reference/cli/config"},{"title":"tai connectors","icon":"terminal","href":"/reference/cli/connectors"},{"title":"tai conversations","icon":"terminal","href":"/reference/cli/conversations"},{"title":"tai db","icon":"terminal","href":"/reference/cli/db"},{"title":"tai doctor","icon":"terminal","href":"/reference/cli/doctor"},{"title":"tai extensions","icon":"terminal","href":"/reference/cli/extensions"},{"title":"tai fleet","icon":"terminal","href":"/reference/cli/fleet"},{"title":"tai hooks","icon":"terminal","href":"/reference/cli/hooks"},{"title":"tai interactions","icon":"terminal","href":"/reference/cli/interactions"},{"title":"tai keys","icon":"terminal","href":"/reference/cli/keys"},{"title":"tai manifest","icon":"terminal","href":"/reference/cli/manifest"},{"title":"tai mcp","icon":"terminal","href":"/reference/cli/mcp"},{"title":"tai metrics","icon":"terminal","href":"/reference/cli/metrics"},{"title":"tai notifications","icon":"terminal","href":"/reference/cli/notifications"},{"title":"tai obs","icon":"terminal","href":"/reference/cli/obs"},{"title":"tai openapi","icon":"terminal","href":"/reference/cli/openapi"},{"title":"tai plugins","icon":"terminal","href":"/reference/cli/plugins"},{"title":"tai presets","icon":"terminal","href":"/reference/cli/presets"},{"title":"tai principals","icon":"terminal","href":"/reference/cli/principals"},{"title":"tai resources","icon":"terminal","href":"/reference/cli/resources"},{"title":"tai roles","icon":"terminal","href":"/reference/cli/roles"},{"title":"tai runs","icon":"terminal","href":"/reference/cli/runs"},{"title":"tai sandbox","icon":"terminal","href":"/reference/cli/sandbox"},{"title":"tai schedules","icon":"terminal","href":"/reference/cli/schedules"},{"title":"tai scopes","icon":"terminal","href":"/reference/cli/scopes"},{"title":"tai serve","icon":"terminal","href":"/reference/cli/serve"},{"title":"tai setup","icon":"terminal","href":"/reference/cli/setup"},{"title":"tai state-templates","icon":"terminal","href":"/reference/cli/state-templates"},{"title":"tai states","icon":"terminal","href":"/reference/cli/states"},{"title":"tai storage","icon":"terminal","href":"/reference/cli/storage"},{"title":"tai sub-mcp","icon":"terminal","href":"/reference/cli/sub-mcp"},{"title":"tai system","icon":"terminal","href":"/reference/cli/system"},{"title":"tai templates","icon":"terminal","href":"/reference/cli/templates"},{"title":"tai tool-meta","icon":"terminal","href":"/reference/cli/tool-meta"},{"title":"tai tools","icon":"terminal","href":"/reference/cli/tools"},{"title":"tai traces","icon":"terminal","href":"/reference/cli/traces"},{"title":"tai version","icon":"terminal","href":"/reference/cli/version"}]},{"group":"Settings","icon":"sliders","pages":[{"title":"Settings reference","icon":"sliders","href":"/reference/settings"}]},{"group":"Capability map","icon":"compass","pages":[{"title":"Capability map","icon":"compass","href":"/reference/capability-map"}]},{"group":"Conversation bridge","icon":"comments","pages":[{"title":"Conversation bridge","icon":"comments","href":"/reference/conversation-bridge"}]},{"group":"Python SDK","icon":"python","pages":[{"title":"Python SDK","icon":"python","href":"/reference/python-sdk/index"},{"title":"App facade (tai42_contract.app)","icon":"layer-group","href":"/reference/python-sdk/contract-app"},{"title":"Agents (tai42_contract.agent)","icon":"robot","href":"/reference/python-sdk/contract-agent"},{"title":"Versioning (tai42_contract.versioning)","icon":"code-branch","href":"/reference/python-sdk/contract-versioning"},{"title":"Presets (tai42_contract.presets)","icon":"sliders","href":"/reference/python-sdk/contract-presets"},{"title":"Connectors (tai42_contract.connectors)","icon":"plug","href":"/reference/python-sdk/contract-connectors"},{"title":"Extensions (tai42_contract.extensions)","icon":"puzzle-piece","href":"/reference/python-sdk/contract-extensions"},{"title":"Monitoring (tai42_contract.monitoring)","icon":"chart-line","href":"/reference/python-sdk/contract-monitoring"},{"title":"Storage (tai42_contract.storage)","icon":"database","href":"/reference/python-sdk/contract-storage"},{"title":"Backends (tai42_contract.backend)","icon":"server","href":"/reference/python-sdk/contract-backend"},{"title":"Sandbox (tai42_contract.sandbox)","icon":"box","href":"/reference/python-sdk/contract-sandbox"},{"title":"Channels (tai42_contract.channels)","icon":"paper-plane","href":"/reference/python-sdk/contract-channels"},{"title":"Accounts (tai42_contract.accounts)","icon":"user-lock","href":"/reference/python-sdk/contract-accounts"},{"title":"Tools (tai42_contract.tools)","icon":"wrench","href":"/reference/python-sdk/contract-tools"},{"title":"Manifest (tai42_contract.manifest)","icon":"file-lines","href":"/reference/python-sdk/contract-manifest"},{"title":"Plugins (tai42_contract.plugins)","icon":"store","href":"/reference/python-sdk/contract-plugins"},{"title":"Interaction outcomes (tai42_contract.interactions)","icon":"comments","href":"/reference/python-sdk/contract-interactions"},{"title":"Plugin I/O and env (tai42_kit.plugins)","icon":"store","href":"/reference/python-sdk/kit-plugins"},{"title":"Provider registration (tai42_kit.access_control, tai42_kit.accounts)","icon":"id-card","href":"/reference/python-sdk/kit-registration"},{"title":"Pooled clients (tai42_kit.clients)","icon":"network-wired","href":"/reference/python-sdk/kit-clients"},{"title":"Postgres client (tai42_kit.clients.impl.postgres)","icon":"database","href":"/reference/python-sdk/kit-postgres"},{"title":"Loop-bound resources (tai42_kit.loop_bound)","icon":"arrows-rotate","href":"/reference/python-sdk/kit-loop-bound"},{"title":"Private event loop (tai42_kit.backend.private_loop)","icon":"rotate","href":"/reference/python-sdk/kit-private-loop"},{"title":"Shared event loop (tai42_kit.backend.shared_loop)","icon":"share-nodes","href":"/reference/python-sdk/kit-shared-loop"},{"title":"Closing event loops (tai42_kit.loop_closing)","icon":"circle-stop","href":"/reference/python-sdk/kit-loop-closing"},{"title":"Backend tools (tai42_kit.backend tool surface)","icon":"toolbox","href":"/reference/python-sdk/kit-backend-tools"},{"title":"Backend dispatch (tai42_kit.backend dispatch helpers)","icon":"shuffle","href":"/reference/python-sdk/kit-backend-dispatch"},{"title":"LLM factories and the classifier contract (tai42_kit.llm)","icon":"brain","href":"/reference/python-sdk/kit-llm"},{"title":"Run traces (tai42_kit.monitoring)","icon":"diagram-project","href":"/reference/python-sdk/kit-monitoring"},{"title":"Checkpoint stores (tai42_kit.llm.checkpoint)","icon":"floppy-disk","href":"/reference/python-sdk/kit-checkpoint"},{"title":"Settings (tai42_kit.settings)","icon":"gear","href":"/reference/python-sdk/kit-settings"},{"title":"Transports (tai42_kit.transport)","icon":"route","href":"/reference/python-sdk/kit-transport"},{"title":"Network guard (tai42_kit.net)","icon":"shield-halved","href":"/reference/python-sdk/kit-net"},{"title":"Park index and park seams (tai42_kit.interactions)","icon":"square-parking","href":"/reference/python-sdk/kit-interactions"},{"title":"Logging (tai42_kit.logging)","icon":"file-lines","href":"/reference/python-sdk/kit-logging"},{"title":"Skeleton app (tai42_skeleton.app)","icon":"microchip","href":"/reference/python-sdk/skeleton-app"},{"title":"ASGI factory (tai42_skeleton.asgi)","icon":"server","href":"/reference/python-sdk/skeleton-asgi"},{"title":"State record validation (tai42_skeleton.states)","icon":"list-check","href":"/reference/python-sdk/skeleton-states"}]},{"group":"Studio SDK","icon":"puzzle-piece","pages":[{"title":"Studio SDK","icon":"puzzle-piece","href":"/reference/studio-sdk/index"},{"title":"Plugin API","icon":"plug","href":"/reference/studio-sdk/plugin-api"},{"title":"Hooks","icon":"circle-nodes","href":"/reference/studio-sdk/hooks"},{"title":"Navigation","icon":"compass","href":"/reference/studio-sdk/navigation"},{"title":"Components","icon":"shapes","href":"/reference/studio-sdk/components"},{"title":"Schema forms","icon":"list-check","href":"/reference/studio-sdk/schema-forms"},{"title":"MCP widgets","icon":"diagram-project","href":"/reference/studio-sdk/mcp-widgets"},{"title":"Utilities","icon":"wrench","href":"/reference/studio-sdk/utilities"},{"title":"Host \u0026 testing","icon":"shield-halved","href":"/reference/studio-sdk/host-testing"}]}]}]},"basePath":"","title":"TAI42 — the OS for AI tools","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","Page-CYZot51e.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","clsx-DptzKFCt.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Dt1IougW.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CZ6Wt2Vb.js"]}