{"components":{"schemas":{"AICompletionResult":{"description":"The result of an AI chat completion request. Returned by chat completion endpoints after the model finishes generating.","example":{"finish_reason":"stop","message":{"content":"How can I help you today?","content_parts":[{}],"resume_token":"string","role":"user","tool_calls":[{"arguments":{},"id":"string","name":"Example Name","thought_signature":"string"}],"tool_results":[{"content":"string","id":"string","name":"Example Name"}]},"messages":[{"content":"How can I help you today?","content_parts":[{}],"resume_token":"string","role":"user","tool_calls":[{"arguments":{},"id":"string","name":"Example Name","thought_signature":"string"}],"tool_results":[{"content":"string","id":"string","name":"Example Name"}]}],"token_usage":{}},"properties":{"finish_reason":{"description":"The reason the model stopped generating. Common values include `\"stop\"` (natural end), `\"length\"` (token limit reached), and `\"tool_calls\"` (the model invoked a tool).","example":"stop","type":"string"},"message":{"$ref":"#/components/schemas/AIMessage","description":"The final assistant message produced by the completion."},"messages":{"description":"The complete message history for the conversation, including all user, assistant, and tool messages in order.","items":{"$ref":"#/components/schemas/AIMessage"},"type":"array"},"token_usage":{"description":"Token consumption breakdown keyed by model ID. Each value is a map with `\"input_tokens\"` and `\"output_tokens\"` counts. `null` when usage data is unavailable.","example":{},"type":"object"}},"required":["finish_reason","message","messages"],"type":"object"},"AIImageResult":{"description":"The result returned by an AI image generation or editing operation. Contains the generated image (as inline data or a URL) along with dimension, size, and usage metadata.","example":{"aspect_ratio":"1:1","height":1024,"image_data":"string","image_size":"1K","image_type":"image/png","image_url":"https://example.com","model":"dall-e-3","revised_prompt":"A photorealistic image of a sunset over the ocean with warm golden hues.","size":"1024x1024","usage":{"key":"value"},"width":1024},"properties":{"aspect_ratio":{"description":"Aspect ratio of the generated image, e.g. `\"16:9\"` or `\"1:1\"`. `null` when not reported by the provider.","example":"1:1","type":"string"},"height":{"description":"Height of the generated image in pixels. `null` when the provider does not report dimensions.","example":1024,"type":"integer"},"image_data":{"description":"The generated image encoded as a base64 string. Present when the provider returns inline image data. `null` when `image_url` is set instead.","example":"string","type":"string"},"image_size":{"description":"Resolution tier label for the image, e.g. `\"1K\"` or `\"2K\"`. `null` when the provider does not include a tier label.","example":"1K","type":"string"},"image_type":{"description":"MIME type of the generated image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` when the provider does not report a content type.","example":"image/png","type":"string"},"image_url":{"description":"Temporary URL pointing to the generated image hosted by the provider. Present when the provider returns a URL rather than inline data. `null` when `image_data` is set instead.","example":"https://example.com","type":"string"},"model":{"description":"Identifier of the model that produced the image, e.g. `\"dall-e-3\"` or `\"imagen-3\"`.","example":"dall-e-3","type":"string"},"revised_prompt":{"description":"The prompt as rewritten by the provider before generation. Some providers (e.g. DALL-E 3) automatically expand or safety-check the original prompt. `null` when the provider does not revise prompts.","example":"A photorealistic image of a sunset over the ocean with warm golden hues.","type":"string"},"size":{"description":"Canonical size string as returned by the provider, e.g. `\"1024x1024\"`. `null` when not reported.","example":"1024x1024","type":"string"},"usage":{"description":"Provider-reported token and compute usage for the request. Structure varies by provider. `null` when usage data is unavailable.","example":{"key":"value"},"type":"object"},"width":{"description":"Width of the generated image in pixels. `null` when the provider does not report dimensions.","example":1024,"type":"integer"}},"required":["model"],"type":"object"},"AIMessage":{"description":"A single message in an AI conversation, following the OpenAI-compatible chat format. Used in both request inputs and completion responses.","example":{"content":"How can I help you today?","content_parts":[{}],"resume_token":"string","role":"user","tool_calls":[{"arguments":{},"id":"string","name":"Example Name","thought_signature":"string"}],"tool_results":[{"content":"string","id":"string","name":"Example Name"}]},"properties":{"content":{"description":"Plain-text content of the message. Present for `system`, `user`, and `assistant` messages. `null` when the message body is expressed through `content_parts` or `tool_calls`.","example":"How can I help you today?","type":"string"},"content_parts":{"description":"Multimodal content parts for the message, used when the body includes images or mixed media. Each part is a map with a `type` key (`\"text\"`, `\"image_url\"`, or `\"image_data\"`). `null` when `content` is set.","example":[{}],"items":{"type":"object"},"type":"array"},"resume_token":{"description":"Opaque token that can be passed on a subsequent request to resume this conversation from the current state. `null` when the provider does not support conversation resumption.","example":"string","type":"string"},"role":{"description":"The speaker role for this message. One of `\"system\"`, `\"user\"`, `\"assistant\"`, or `\"tool\"`.","example":"user","type":"string"},"structured_output":{"description":"Parsed structured data returned by the model when a JSON schema or structured-output mode was requested. Shape varies by the schema supplied at call time. `null` when structured output was not requested."},"tool_calls":{"description":"Tool calls requested by the model in an `assistant` message. Present only on assistant messages that invoke one or more tools. `null` on all other message roles.","items":{"$ref":"#/components/schemas/AIToolCall"},"type":"array"},"tool_results":{"description":"Tool execution results provided in a `tool` message. Each entry corresponds to a prior tool call by its `id`. `null` on all other message roles.","items":{"$ref":"#/components/schemas/AIToolResult"},"type":"array"}},"required":["role"],"type":"object"},"AIToolCall":{"description":"A tool (function) call emitted by the assistant within an AI message. Mirrors the OpenAI tool-call object format.","example":{"arguments":{},"id":"string","name":"Example Name","thought_signature":"string"},"properties":{"arguments":{"description":"Arguments the model wants to pass to the tool, as a key-value map. Deserialize and validate these against the tool's input schema before executing.","example":{},"type":"object"},"id":{"description":"Unique identifier for this tool call, assigned by the model. Use this value as `id` when submitting the corresponding tool result.","example":"string","type":"string"},"name":{"description":"Name of the tool or function the model wants to invoke, e.g. `\"web_search\"` or `\"run_code\"`.","example":"Example Name","type":"string"},"thought_signature":{"description":"Opaque signature representing the model's internal reasoning that led to this tool call. `null` when the provider does not expose chain-of-thought data.","example":"string","type":"string"}},"required":["arguments","id","name"],"type":"object"},"AIToolResult":{"description":"The result of executing a tool call, submitted back to the model as a tool-role message. Mirrors the OpenAI tool-result object format.","example":{"content":"string","id":"string","name":"Example Name"},"properties":{"content":{"description":"Plain-text output produced by the tool execution. `null` when the result is expressed entirely through `resolution`.","example":"string","type":"string"},"id":{"description":"ID of the tool call this result satisfies. Must match the `id` from the corresponding `AIToolCall`.","example":"string","type":"string"},"name":{"description":"Name of the tool or function that was executed, e.g. `\"web_search\"`. Must match the `name` from the corresponding `AIToolCall`.","example":"Example Name","type":"string"},"resolution":{"description":"Structured result data from the tool execution. Shape varies by tool. `null` when the result is expressed as plain text in `content`."}},"required":["id","name"],"type":"object"},"Acl":{"description":"An access-control list payload that supports either full replacement or targeted patch operations on a resource's grants.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","items":{"$ref":"#/components/schemas/AclGrant"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","items":{"$ref":"#/components/schemas/AclGrant"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","items":{"$ref":"#/components/schemas/AclRemoveTarget"},"type":"array"}},"type":"object"},"AclGrant":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"AclRemoveTarget":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"ActivityFeedEntry":{"description":"A single event record in an activity feed, capturing what happened, who caused it, and which resources were involved.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"The agent that produced this event. Returns an agent ID (`agi_...`) by default, or an expanded agent object when the association is loaded. `null` if no agent is associated.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","oneOf":[{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},{"type":"string"}]},"app":{"description":"ID of the application that produced this entry (`dap_...`). `null` if not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Array of attachment objects associated with this entry. Each attachment has a `type` field (e.g. `\"file\"`, `\"task\"`, `\"artifact\"`) and type-specific additional fields. Empty array when there are no attachments.","example":[{}],"items":{"type":"object"},"type":"array"},"automation_run":{"description":"ID of the automation run that produced this entry (`atr_...`). `null` if not produced by an automation run.","example":"atr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content":{"description":"A longer explanation of the event rendered as Markdown. `null` if no additional content is available.","example":"The agent completed the task successfully.","type":"string"},"correlation_id":{"description":"An opaque string used to group related entries together. Entries sharing the same `correlation_id` belong to a single logical operation. `null` if not correlated.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"created_at":{"description":"When this activity feed entry was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Activity feed entry ID (`afe_...`).","example":"afe_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"The type of event this entry represents, e.g. `\"agent_step\"` or `\"tool_call\"`. Determines how `title`, `content`, and `attachments` should be interpreted.","example":"agent_step","type":"string"},"level":{"description":"Severity level of the event. One of `\"info\"`, `\"warning\"`, or `\"error\"`. `null` if no severity is set.","example":"info","type":"string"},"metadata":{"description":"Arbitrary key-value metadata stored on this entry. Returns an empty object when no metadata is set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization this entry belongs to (`org_...`). `null` if not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"routine_run":{"description":"ID of the agent routine run that produced this entry (`arr_...`). `null` if not produced by a routine run.","example":"arr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment this entry was generated in. `null` in production contexts.","example":"string","type":"string"},"session_record":{"description":"ID of the agent session record this entry belongs to (`ase_...`). `null` if not part of an agent session.","example":"ase_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"team":{"description":"ID of the team this entry is associated with (`tem_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this entry is associated with (`thr_...`). `null` if not linked to a thread.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"A one-line human-readable summary of the event. `null` if the entry has no title.","example":"Example Title","type":"string"},"updated_at":{"description":"When this activity feed entry was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"The user who triggered this event. Returns a user ID (`usr_...`) by default, or an expanded user object when the association is loaded. `null` if no user is associated.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","oneOf":[{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},{"type":"string"}]}},"required":["id"],"type":"object"},"ActivityFeedEntryListResponse":{"description":"A paginated list of activity feed entries returned by a feed query, with cursors for navigating backward and forward through results.","example":{"after_cursor":"string","before_cursor":"string","entries":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"has_more":true},"properties":{"after_cursor":{"description":"Opaque cursor to pass as `after` to retrieve the next page of entries. `null` when this is the last page.","example":"string","type":"string"},"before_cursor":{"description":"Opaque cursor to pass as `before` to retrieve the previous page of entries. `null` when this is the first page.","example":"string","type":"string"},"entries":{"description":"Array of activity feed entry objects for the current page, ordered by time descending.","items":{"$ref":"#/components/schemas/ActivityFeedEntry"},"type":"array"},"has_more":{"description":"Whether additional entries exist beyond the current page. When `true`, use `after_cursor` to fetch the next page.","example":true,"type":"boolean"}},"required":["entries","has_more"],"type":"object"},"Actor":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"$ref":"#/components/schemas/ImageSource","description":"Profile picture for the actor. `null` if the actor has no profile picture."}},"type":"object"},"Agent":{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"$ref":"#/components/schemas/Acl","description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope."},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"$ref":"#/components/schemas/AgentSourceSolution","description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints."},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"AgentComputer":{"description":"A cloud computer resource provisioned for an agent to use for browser and desktop automation tasks.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","config":{"key":"value"},"created_at":"2024-01-01T00:00:00Z","error_message":"string","id":"cmp_0aBcDeFgHiJkLmNoPqRsTu","last_active_at":"2024-01-01T00:00:00Z","lookup_key":"main-computer","metadata":{"key":"value"},"name":"Example Name","region":"us-east-1","sprite_url":"https://example.com","status":"ready","updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent that owns this computer (`agi_...`). `null` if the computer is not yet assigned to an agent.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"ID of the app this computer belongs to (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"config":{"description":"Provider-specific configuration key-value pairs for the computer. Structure depends on the underlying compute provider.","example":{"key":"value"},"type":"object"},"created_at":{"description":"When the computer was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"error_message":{"description":"Human-readable error description when `status` is `\"error\"`. `null` otherwise.","example":"string","type":"string"},"id":{"description":"Computer ID (`cmp_...`).","example":"cmp_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"last_active_at":{"description":"When the computer last reported activity or received a command. `null` if the computer has never been active.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"lookup_key":{"description":"Unique, stable identifier you assign to this computer within its app. `null` if not set.","example":"main-computer","type":"string"},"metadata":{"description":"Arbitrary key-value metadata you attached to the computer. `null` if none was provided.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the computer. `null` if not set.","example":"Example Name","type":"string"},"region":{"description":"Cloud region where the computer is hosted, e.g. `\"us-east-1\"`. `null` if not yet assigned.","example":"us-east-1","type":"string"},"sprite_url":{"description":"URL of the live screenshot sprite used to render a real-time preview of the computer's screen. `null` when no sprite is available.","example":"https://example.com","type":"string"},"status":{"description":"Current lifecycle state of the computer. Common values include `\"provisioning\"`, `\"ready\"`, `\"error\"`, and `\"terminated\"`.","example":"ready","type":"string"},"updated_at":{"description":"When the computer record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"AgentComputerListResponse":{"description":"A list of agent computers returned by a list query.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","config":{"key":"value"},"created_at":"2024-01-01T00:00:00Z","error_message":"string","id":"cmp_0aBcDeFgHiJkLmNoPqRsTu","last_active_at":"2024-01-01T00:00:00Z","lookup_key":"main-computer","metadata":{"key":"value"},"name":"Example Name","region":"us-east-1","sprite_url":"https://example.com","status":"ready","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of agent computer objects matching the query.","items":{"$ref":"#/components/schemas/AgentComputer"},"type":"array"}},"required":["data"],"type":"object"},"AgentCreateResponse":{"description":"The response returned by `POST /api/v1/agents`. Contains all agent fields plus an optional `installed_configs` array when a `template_bundle` was supplied in the request.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-5-sonnet-20241022","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant.","installed_configs":[{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"my-skill","kind":"Skill","lookup_key":"my-skill"}],"lookup_key":"my-agent","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","originator":"my-service","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"$ref":"#/components/schemas/Acl","description":"Access control list governing who can interact with this agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied."},"app":{"description":"ID of the app this agent belongs to (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default AI model the agent uses when no model is specified at runtime, e.g. `\"claude-3-5-sonnet-20241022\"`. `null` if not configured.","example":"claude-3-5-sonnet-20241022","type":"string"},"email":{"description":"Email address assigned to this agent for inbound email handling. `null` if not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System prompt or persona description that shapes the agent's behavior. `null` if not set.","example":"You are a helpful assistant.","type":"string"},"installed_configs":{"description":"List of config records created as part of this request's `template_bundle` install. One entry per persisted config, sorted by `key`. Omitted entirely when the request did not include a `template_bundle`.","items":{"$ref":"#/components/schemas/InstalledConfigEntry"},"type":"array"},"lookup_key":{"description":"Unique, stable identifier for the agent within its app. `null` if not set.","example":"my-agent","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. `null` if none was provided.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` for agents outside an org.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"originator":{"description":"Free-form label identifying the source or author of the agent, e.g. a username or service name. `null` if not set.","example":"my-service","type":"string"},"phone_number":{"description":"Phone number assigned to this agent for inbound SMS or voice handling. `null` if not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`sbx_...`). `null` for agents not scoped to a sandbox.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"team":{"description":"ID of the team that owns this agent (`tea_...`). `null` if owned by a user rather than a team.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if owned by a team.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"AgentEnvVarMasked":{"description":"An agent environment variable with its secret value masked for safe display in list and show responses.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"anv_0aBcDeFgHiJkLmNoPqRsTu","key":"OPENAI_API_KEY","masked_value":"****1234","updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent this environment variable belongs to (`agt_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the environment variable was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Optional human-readable note describing the purpose of this variable. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Environment variable ID (`anv_...`).","example":"anv_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Name of the environment variable as it appears in the agent's runtime.","example":"OPENAI_API_KEY","type":"string"},"masked_value":{"description":"Redacted representation of the secret value. The last four characters are preserved; all preceding characters are replaced with `****`. Returns `****` when the value is absent or four characters or fewer.","example":"****1234","type":"string"},"updated_at":{"description":"When the environment variable was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["agent","id","key","masked_value"],"type":"object"},"AgentEnvVarMaskedList":{"description":"Flat list of masked environment variables belonging to an agent.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"anv_0aBcDeFgHiJkLmNoPqRsTu","key":"OPENAI_API_KEY","masked_value":"****1234","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of masked environment variable objects for the agent.","items":{"$ref":"#/components/schemas/AgentEnvVarMasked"},"type":"array"}},"required":["data"],"type":"object"},"AgentExport":{"description":"A portable export bundle for an agent, containing everything needed to re-deploy it in another workspace or environment.","example":{"configs":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","current_version":{"change_description":"An example description.","content_hash":"sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824","created_at":"2024-01-01T00:00:00Z","data":{},"id":"cfv_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","version_number":1},"id":"cfg_0aBcDeFgHiJkLmNoPqRsTu","is_archived":true,"kind":"Agent","lookup_key":"string","mime_type":"application/json","org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent":"cfg_0aBcDeFgHiJkLmNoPqRsTu","parent_solution":"cfg_0aBcDeFgHiJkLmNoPqRsTu","raw_content":"string","relative_path":"string","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","virtual_path":"agents/my-agent.yaml"}],"template":{}},"properties":{"configs":{"description":"Ordered list of config file objects that the agent depends on. Included in full so the import can recreate all dependencies without additional requests.","items":{"$ref":"#/components/schemas/Config"},"type":"array"},"template":{"description":"The agent template definition as a structured map. Pass this directly to the import endpoint to recreate the agent.","example":{},"type":"object"}},"required":["configs","template"],"type":"object"},"AgentHealth":{"description":"Aggregate health profile for an agent, summarizing its current operational status, score, and the full list of setup and health actions.","example":{"activity":{},"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"checked_at":"2024-01-01T00:00:00Z","checks":[{}],"counts":{},"health_actions":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","depends_on":["string"],"description":"An example description.","id":"aha_0aBcDeFgHiJkLmNoPqRsTu","kind":"env_var","last_verified_at":"2024-01-01T00:00:00Z","last_verifier_message":"string","org":"org_0aBcDeFgHiJkLmNoPqRsTu","params":{"key":"value"},"required":true,"sort_order":1,"source":"setup","status":"pending","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","verify_config":{}}],"recent":{},"score":85,"status":"ok"},"properties":{"activity":{"description":"Timestamps for the agent's most recent and next scheduled activity, used to surface last-run and upcoming-run information.","example":{},"type":"object"},"agent":{"$ref":"#/components/schemas/Agent","description":"The agent this health profile describes."},"checked_at":{"description":"When the health profile was last computed (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"checks":{"description":"Renderable health check results. Each object includes at minimum `key`, `label`, `status`, and `summary` fields.","example":[{}],"items":{"type":"object"},"type":"array"},"counts":{"description":"Action counts broken down by dependency area and resolution status, used to render progress indicators per category.","example":{},"type":"object"},"health_actions":{"description":"All actionable items tracked for this agent, including both `\"setup\"` items (post-install checklist) and `\"health\"` items (probe-detected issues). Sorted by `(source, sort_order, id)`. Use each item's `params` field to construct deep-links that route the user to the correct resolution flow.","items":{"$ref":"#/components/schemas/AgentHealthAction"},"type":"array"},"recent":{"description":"Recent execution metrics for the agent, including run counts and failure counts over a recent time window.","example":{},"type":"object"},"score":{"description":"Normalized health score from `0` (fully degraded) to `100` (fully healthy), derived from the weight and status of all health actions.","example":85,"type":"integer"},"status":{"description":"Overall health status of the agent. One of `\"ok\"`, `\"warning\"`, or `\"critical\"`.","example":"ok","type":"string"}},"required":["activity","agent","checked_at","checks","counts","health_actions","recent","score","status"],"type":"object"},"AgentHealthAction":{"description":"A single actionable item in an agent's health or setup checklist, carrying the structured data needed to render the item and deep-link to the resolution flow.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","depends_on":["string"],"description":"An example description.","id":"aha_0aBcDeFgHiJkLmNoPqRsTu","kind":"env_var","last_verified_at":"2024-01-01T00:00:00Z","last_verifier_message":"string","org":"org_0aBcDeFgHiJkLmNoPqRsTu","params":{"key":"value"},"required":true,"sort_order":1,"source":"setup","status":"pending","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","verify_config":{}},"properties":{"agent":{"description":"ID of the agent this action is scoped to (`agt_...`). `null` for org-level actions.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"ID of the application this action is associated with (`app_...`). `null` when not app-scoped.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When this health action was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"depends_on":{"description":"IDs of other health actions that must reach `\"completed\"` status before this action can be started. Empty array when there are no dependencies.","example":["string"],"items":{"type":"string"},"type":"array"},"description":{"description":"Longer Markdown-formatted explanation of what the action requires and why. `null` if not provided.","example":"An example description.","type":"string"},"id":{"description":"Health action ID (`aha_...`).","example":"aha_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Category of action to take. One of `\"env_var\"` (set a secret), `\"install\"` (authorize an OAuth integration), or `\"custom\"` (agent-defined step).","example":"env_var","type":"string"},"last_verified_at":{"description":"When the verifier last ran for this action (ISO 8601). `null` until the verifier has been invoked at least once.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"last_verifier_message":{"description":"Human-readable output from the most recent verifier run. `null` if the verifier has not run yet.","example":"string","type":"string"},"org":{"description":"ID of the organization this action is associated with (`org_...`). `null` when not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"params":{"description":"Kind-specific structured data used to construct the deep-link for this action. For `\"env_var\"` actions includes `key` and `scope`; for `\"install\"` actions includes `installation_kind`. Empty object `{}` when no additional parameters are needed.","example":{"key":"value"},"type":"object"},"required":{"description":"`true` if this action must be completed before the agent is considered fully operational and counts toward the blocking checklist progress bar.","example":true,"type":"boolean"},"sort_order":{"description":"Display order within the same `source` group. Lower values appear first.","example":1,"type":"integer"},"source":{"description":"Lifecycle stage that produced this action. One of `\"setup\"` (post-install checklist item) or `\"health\"` (probe-detected issue).","example":"setup","type":"string"},"status":{"description":"Current resolution state. One of `\"pending\"` (not yet completed), `\"completed\"` (resolved), `\"skipped\"` (dismissed by the user), or `\"degraded\"` (completed but the verifier is reporting a warning).","example":"pending","type":"string"},"title":{"description":"Short display label for this action, intended for use as a checklist item heading.","example":"Example Title","type":"string"},"updated_at":{"description":"When this health action was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"verify_config":{"description":"Configuration for the action's verifier step. Contains at minimum a `type` field that indicates which verification affordance to render. Server-internal fields are stripped before this is returned.","example":{},"type":"object"}},"required":["id","kind","required","sort_order","source","status","title"],"type":"object"},"AgentListResponse":{"description":"Paginated list of agent objects. Use the pagination fields to traverse multiple pages of results.","example":{"data":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":42,"total_pages":1},"properties":{"data":{"description":"Array of agent objects for the current page.","items":{"$ref":"#/components/schemas/Agent"},"type":"array"},"has_next":{"description":"`true` when a subsequent page of results exists.","example":true,"type":"boolean"},"has_prev":{"description":"`true` when a previous page of results exists.","example":true,"type":"boolean"},"page":{"description":"Current page number, starting at 1.","example":1,"type":"integer"},"page_size":{"description":"Maximum number of agents returned per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of agents matching the query across all pages.","example":42,"type":"integer"},"total_pages":{"description":"Total number of pages available given the current `page_size`.","example":1,"type":"integer"}},"required":["data"],"type":"object"},"AgentRoutine":{"description":"An agent routine defines a reusable handler — script, preset, or chain — that runs in response to events or on a schedule.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","description":"An example description.","event_config":{},"event_type":"agentroutine.invoked","handler_type":"script","id":"arn_0aBcDeFgHiJkLmNoPqRsTu","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"daily-digest","metadata":{"key":"value"},"name":"Example Name","preset_config":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"preset_name":"Example Name","schedule":"string","script":"string","status":"active","steps":[{}],"trigger_context":"event","updated_at":"2024-01-01T00:00:00Z"},"properties":{"acl":{"$ref":"#/components/schemas/Acl","description":"Access control list for the routine. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the routine is accessible to all members of its scope."},"agent":{"description":"ID of the agent that owns this routine (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"Application that scopes this routine (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"config":{"description":"ID of the Config record that backs this routine's configuration (`cfg_...`). `null` when the routine is not config-backed.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When this routine was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Optional description of what this routine does. `null` when not set.","example":"An example description.","type":"string"},"event_config":{"description":"Additional configuration controlling how the event trigger is matched or filtered. Shape depends on `event_type`. `null` when not configured.","example":{},"type":"object"},"event_type":{"description":"Platform event type that triggers this routine, e.g. `\"agentroutine.invoked\"`. `null` for schedule-only routines.","example":"agentroutine.invoked","type":"string"},"handler_type":{"description":"Execution strategy for this routine. One of `\"workflow_graph\"`, `\"script\"`, `\"preset\"`, or `\"chain\"`.","example":"script","type":"string"},"id":{"description":"Routine ID (`arn_...`).","example":"arn_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"last_applied_template_config":{"description":"ID of the AgentRoutineTemplate Config this routine was last provisioned or updated from (`cfg_...`). `null` for hand-built routines.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Unique human-readable key used to look up this routine without knowing its ID. `null` when not set.","example":"daily-digest","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this routine. `null` when not set.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable name for the routine.","example":"Example Name","type":"string"},"preset_config":{"$ref":"#/components/schemas/PresetConfig","description":"Resolved preset configuration when `handler_type` is `\"preset\"`. `null` for other handler types."},"preset_name":{"description":"Name of the preset invoked when `handler_type` is `\"preset\"`. `null` for other handler types.","example":"Example Name","type":"string"},"schedule":{"description":"Cron expression controlling when the routine fires on a schedule. `null` for event-only routines.","example":"string","type":"string"},"script":{"description":"Inline script body executed when `handler_type` is `\"script\"`. `null` for other handler types.","example":"string","type":"string"},"status":{"description":"Lifecycle status of the routine. One of `\"draft\"`, `\"active\"`, or `\"paused\"`. Only `\"active\"` routines respond to triggers.","example":"active","type":"string"},"steps":{"description":"Ordered list of chain steps (present when handler_type is \"chain\"). Each step is a plain map with handler_type, optional body fields (preset_name / preset_config / script / config), and step-local plumbing (name, inputs, output_key, on_error).","example":[{}],"items":{"type":"object"},"type":"array"},"trigger_context":{"description":"Execution context in which runs are created. One of `\"event\"` (background job) or `\"chat_session\"` (interactive session). Defaults to `\"event\"`.","example":"event","type":"string"},"updated_at":{"description":"When this routine was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"AgentRoutineListResponse":{"description":"List of agent routine objects belonging to a given agent.","example":{"data":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","description":"An example description.","event_config":{},"event_type":"agentroutine.invoked","handler_type":"script","id":"arn_0aBcDeFgHiJkLmNoPqRsTu","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"daily-digest","metadata":{"key":"value"},"name":"Example Name","preset_config":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"preset_name":"Example Name","schedule":"string","script":"string","status":"active","steps":[{}],"trigger_context":"event","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of agent routine objects.","items":{"$ref":"#/components/schemas/AgentRoutine"},"type":"array"}},"required":["data"],"type":"object"},"AgentRoutineRun":{"description":"A single execution of an agent routine, capturing its status, inputs, outputs, and timing.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","duration_ms":1250,"event_id":"string","id":"arr_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"payload":{},"result":{},"routine":"arn_0aBcDeFgHiJkLmNoPqRsTu","status":"completed","structured_response":{},"updated_at":"2024-01-01T00:00:00Z","worker":{"attempt":1,"max_attempts":3,"status":"executing"}},"properties":{"acl":{"$ref":"#/components/schemas/Acl","description":"Access control list for the run. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the run is accessible to all members of its scope."},"agent":{"description":"ID of the agent that owns the parent routine (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"Application that scopes this run (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When this run was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"duration_ms":{"description":"Total wall-clock time the run took to execute, in milliseconds. `null` while the run is still in progress.","example":1250,"type":"integer"},"event_id":{"description":"Identifier of the platform event that triggered this run. `null` for manually invoked runs.","example":"string","type":"string"},"id":{"description":"Routine run ID (`arr_...`).","example":"arr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this run. Empty object when no metadata was set.","example":{"key":"value"},"type":"object"},"payload":{"description":"Input payload delivered to the routine when this run was triggered. Empty object when no payload was provided.","example":{},"type":"object"},"result":{"description":"Output produced by the routine after execution. `null` while the run has not yet completed.","example":{},"type":"object"},"routine":{"description":"ID of the parent routine that produced this run (`arn_...`).","example":"arn_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"status":{"description":"Current execution status. One of `\"pending\"`, `\"running\"`, `\"completed\"`, `\"failed\"`, `\"skipped\"`, or `\"cancelled\"`.","example":"completed","type":"string"},"structured_response":{"description":"Validated structured output extracted from `result` when the routine uses an AgentMessageSchema. `null` if the routine does not use a schema or the run has not completed.","example":{},"type":"object"},"updated_at":{"description":"When this run was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"worker":{"$ref":"#/components/schemas/WorkerStatus","description":"Background worker status. `null` when no worker job is associated with this run."}},"required":["id"],"type":"object"},"AgentRoutineRunListResponse":{"description":"Cursor-paginated list of agent routine run objects, ordered by creation time descending.","example":{"after_cursor":"string","before_cursor":"string","data":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","duration_ms":1250,"event_id":"string","id":"arr_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"payload":{},"result":{},"routine":"arn_0aBcDeFgHiJkLmNoPqRsTu","status":"completed","structured_response":{},"updated_at":"2024-01-01T00:00:00Z","worker":{"attempt":1,"max_attempts":3,"status":"executing"}}]},"properties":{"after_cursor":{"description":"Opaque cursor to pass as the after-cursor parameter to fetch the next page of runs. `null` when no later results exist.","example":"string","type":"string"},"before_cursor":{"description":"Opaque cursor to pass as the before-cursor parameter to fetch the page of runs that precede this one. `null` when no earlier results exist.","example":"string","type":"string"},"data":{"description":"Array of agent routine run objects for the current page.","items":{"$ref":"#/components/schemas/AgentRoutineRun"},"type":"array"}},"required":["data"],"type":"object"},"AgentSchedule":{"description":"A scheduled task created by an agent. Supports one-time and recurring (cron-based) execution patterns.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","cron_expression":"0 9 * * 1","id":"asc_0aBcDeFgHiJkLmNoPqRsTu","instructions":"Send a daily summary of open support tickets to the team Slack channel.","last_run_at":"2024-01-01T00:00:00Z","max_runs":10,"metadata":{"key":"value"},"next_run_at":"2024-01-01T00:00:00Z","run_count":1,"schedule_type":"recurring","scheduled_at":"2024-01-01T00:00:00Z","status":"active","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","timezone":"America/New_York","updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent that owns this schedule (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"ID of the application the schedule belongs to (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the schedule was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"cron_expression":{"description":"Standard cron expression defining the recurrence pattern (e.g. `\"0 9 * * 1\"`). Present only when `schedule_type` is `\"recurring\"`. `null` for one-time schedules.","example":"0 9 * * 1","type":"string"},"id":{"description":"Schedule ID (`asc_...`).","example":"asc_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"instructions":{"description":"The task description the agent will execute when this schedule fires.","example":"Send a daily summary of open support tickets to the team Slack channel.","type":"string"},"last_run_at":{"description":"UTC datetime of the most recent successful execution. `null` if the schedule has never run.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"max_runs":{"description":"Maximum number of times a recurring schedule may fire before automatically transitioning to `\"completed\"`. `null` means no limit.","example":10,"type":"integer"},"metadata":{"description":"Arbitrary key-value pairs attached to the schedule by the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"next_run_at":{"description":"UTC datetime of the next planned execution. `null` if the schedule has completed, been cancelled, or has not yet been computed.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"run_count":{"description":"Total number of times this schedule has fired.","example":1,"type":"integer"},"schedule_type":{"description":"Determines how the schedule repeats. `\"once\"` fires a single time at `scheduled_at` then transitions to `\"completed\"`. `\"recurring\"` fires on the `cron_expression` and reschedules automatically.","example":"recurring","type":"string"},"scheduled_at":{"description":"The exact UTC datetime at which a one-time schedule fires. Present only when `schedule_type` is `\"once\"`. `null` for recurring schedules.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"status":{"description":"Current lifecycle status of the schedule. One of `\"active\"` (will fire as planned), `\"paused\"` (temporarily suspended), `\"completed\"` (has run its last execution), `\"cancelled\"` (manually stopped), or `\"expired\"` (past its valid window).","example":"active","type":"string"},"thread":{"description":"Thread ID (`thr_...`) this schedule is bound to. When set, the scheduled task is delivered into the thread rather than creating a new session. `null` for session-based schedules.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"timezone":{"description":"IANA timezone name used to interpret the cron expression or `scheduled_at` (e.g. `\"America/New_York\"`). Defaults to `\"Etc/UTC\"`.","example":"America/New_York","type":"string"},"updated_at":{"description":"When the schedule was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"AgentSession":{"description":"A durable agent session record representing a single AI task execution. Tracks status, trajectory, result, and any inbox messages delivered to the session.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","completed_at":"2024-01-01T00:00:00Z","created_at":"2024-01-01T00:00:00Z","error":"string","id":"ase_0aBcDeFgHiJkLmNoPqRsTu","inbox":[{}],"instructions":"Summarize the latest activity report and post the results to Slack.","is_system_session":true,"max_runs_per_turn":25,"max_tokens":20000,"max_turns":100,"metadata":{"key":"value"},"name":"Example Name","result":{},"started_at":"2024-01-01T00:00:00Z","status":"running","trajectory":"trj_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"ID of the agent that owns this session (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"completed_at":{"description":"When the session reached a terminal state (`\"completed\"`, `\"failed\"`, or `\"cancelled\"`). `null` if still in progress.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"created_at":{"description":"When the session was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"error":{"description":"Human-readable error message describing why the session failed. `null` unless `status` is `\"failed\"`.","example":"string","type":"string"},"id":{"description":"Session ID (`ase_...`).","example":"ase_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"inbox":{"description":"Ordered list of messages delivered to the session's inbox while it was in the `\"waiting\"` state. Each entry includes `id`, `role`, `content`, `sender_id`, `sender_type`, `sent_at`, and `metadata`.","example":[{}],"items":{"type":"object"},"type":"array"},"instructions":{"description":"The task the agent is instructed to perform in this session.","example":"Summarize the latest activity report and post the results to Slack.","type":"string"},"is_system_session":{"description":"`true` if this session was created by the platform internally (e.g. by a schedule or health action) rather than by a user or API caller.","example":true,"type":"boolean"},"max_runs_per_turn":{"description":"Maximum number of tool calls the agent may make within a single turn. Defaults to `25`.","example":25,"type":"integer"},"max_tokens":{"description":"Maximum number of tokens the session may consume across all turns before being terminated. Defaults to `20000`.","example":20000,"type":"integer"},"max_turns":{"description":"Maximum number of agent turns (LLM calls) allowed before the session is forcibly terminated. Defaults to `100`.","example":100,"type":"integer"},"metadata":{"description":"Arbitrary key-value pairs attached to the session. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Optional human-readable label for the session. `null` when not set.","example":"Example Name","type":"string"},"result":{"description":"Structured output produced by the session on successful completion. Shape is agent-defined. `null` while the session is still running or if it failed.","example":{},"type":"object"},"started_at":{"description":"When the session began executing. `null` if still `\"pending\"`.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"status":{"description":"Current execution status. One of `\"pending\"` (queued, not yet started), `\"running\"` (actively executing), `\"waiting\"` (paused for an inbox message or external event), `\"completed\"` (finished successfully), `\"failed\"` (terminated with an error), or `\"cancelled\"` (manually stopped).","example":"running","type":"string"},"trajectory":{"description":"ID of the trajectory that records the full message history for this session (`trj_...`). `null` until the session has started.","example":"trj_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"AgentSessionListResponse":{"description":"Paginated list response containing an array of agent session objects.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","completed_at":"2024-01-01T00:00:00Z","created_at":"2024-01-01T00:00:00Z","error":"string","id":"ase_0aBcDeFgHiJkLmNoPqRsTu","inbox":[{}],"instructions":"Summarize the latest activity report and post the results to Slack.","is_system_session":true,"max_runs_per_turn":25,"max_tokens":20000,"max_turns":100,"metadata":{"key":"value"},"name":"Example Name","result":{},"started_at":"2024-01-01T00:00:00Z","status":"running","trajectory":"trj_0aBcDeFgHiJkLmNoPqRsTu"}]},"properties":{"data":{"description":"Array of agent session objects for the current page.","items":{"$ref":"#/components/schemas/AgentSession"},"type":"array"}},"required":["data"],"type":"object"},"AgentSkill":{"description":"A skill enabled on an agent, linking the agent to a skill configuration. Controls which capabilities the agent has access to.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","id":"ask_0aBcDeFgHiJkLmNoPqRsTu","instruction":"string","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"status":"active","updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent this skill is attached to (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"ID of the application this skill belongs to (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"config":{"description":"ID of the root skill config record that defines this skill's behavior (`cfg_...`).","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the skill was added to the agent (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Skill ID (`ask_...`).","example":"ask_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"instruction":{"description":"Optional instruction text that overrides the default skill instructions for this specific agent. `null` when no override is set.","example":"string","type":"string"},"last_applied_template_config":{"description":"ID of the agent template config from which this skill was last provisioned or updated (`cfg_...`). `null` if the skill was not provisioned from a template.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"metadata":{"description":"Arbitrary key-value pairs attached to the skill. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"status":{"description":"Whether the skill is currently in use. `\"active\"` means the agent will use this skill during sessions. `\"inactive\"` means it is disabled but not deleted.","example":"active","type":"string"},"updated_at":{"description":"When the skill was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"AgentSkillList":{"description":"Paginated list response containing an array of agent skill objects.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","id":"ask_0aBcDeFgHiJkLmNoPqRsTu","instruction":"string","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"status":"active","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of agent skill objects for the current page.","items":{"$ref":"#/components/schemas/AgentSkill"},"type":"array"}},"required":["data"],"type":"object"},"AgentSourceSolution":{"description":"Summary of the Solution and AgentTemplate that an agent was last provisioned from.\nReturned on single-agent responses; `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"$ref":"#/components/schemas/SolutionSummary","description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution."},"template":{"$ref":"#/components/schemas/UpgradeTemplateSummary","description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from."}},"required":["solution","template"],"type":"object"},"AgentTool":{"description":"A tool attached to an agent, defining a capability the agent can invoke during a conversation or task run.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","async":true,"builtin_tool_config":{},"builtin_tool_key":"string","config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","description":"An example description.","handler_type":"http","id":"atl_0aBcDeFgHiJkLmNoPqRsTu","instruction":"string","kind":"builtin","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","name_prefix":"string","parameters":{},"parameters_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","status":"active","updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent this tool belongs to (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"ID of the application that owns this tool (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"async":{"description":"`true` when the tool executes asynchronously and returns a task handle rather than an immediate result.","example":true,"type":"boolean"},"builtin_tool_config":{"description":"Provider-specific configuration for the built-in tool. Present only when `kind` is `\"builtin\"`. Shape varies by `builtin_tool_key`.","example":{},"type":"object"},"builtin_tool_key":{"description":"Registry key identifying the built-in tool implementation. Present only when `kind` is `\"builtin\"`.","example":"string","type":"string"},"config":{"description":"ID of the config record (`cfg_...`) containing this tool's full configuration. `null` for inline-only tools.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the tool was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of what the tool does, passed to the LLM as part of the tool definition. Resolved from the built-in registry for `kind: \"builtin\"` tools.","example":"An example description.","type":"string"},"handler_type":{"description":"Execution handler type. One of `\"http\"`, `\"script\"`, or `\"builtin\"`.","example":"http","type":"string"},"id":{"description":"Tool ID (`atl_...`).","example":"atl_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"instruction":{"description":"Optional system-level instruction appended to the agent prompt when this tool is active.","example":"string","type":"string"},"kind":{"description":"Tool kind. One of `\"builtin\"`, `\"custom\"`, or `\"mcp\"`.","example":"builtin","type":"string"},"last_applied_template_config":{"description":"ID of the AgentToolTemplate config (`cfg_...`) this tool was last provisioned or updated from. `null` for manually created tools.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this tool within the agent. Unique per agent.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the tool. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable name of the tool as exposed to the LLM. Resolved from the built-in registry for `kind: \"builtin\"` tools.","example":"Example Name","type":"string"},"name_prefix":{"description":"Per-instance namespace prepended to LLM-facing tool names for built-in tools that support multiple instances per agent. `null` when not applicable.","example":"string","type":"string"},"parameters":{"description":"JSON Schema object describing the tool's input parameters as presented to the LLM.","example":{},"type":"object"},"parameters_config":{"description":"ID of the config record (`cfg_...`) storing the tool's parameter schema. `null` when parameters are defined inline.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"status":{"description":"Current status of the tool. One of `\"active\"` or `\"disabled\"`.","example":"active","type":"string"},"updated_at":{"description":"When the tool was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"AgentToolListResponse":{"description":"Paginated list response containing the tools attached to an agent.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","async":true,"builtin_tool_config":{},"builtin_tool_key":"string","config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","description":"An example description.","handler_type":"http","id":"atl_0aBcDeFgHiJkLmNoPqRsTu","instruction":"string","kind":"builtin","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","name_prefix":"string","parameters":{},"parameters_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","status":"active","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of agent tool objects returned for the current request.","items":{"$ref":"#/components/schemas/AgentTool"},"type":"array"}},"required":["data"],"type":"object"},"AgentUpgradeChange":{"description":"One child-resource change produced by an agent upgrade, describing the action to be taken on a single resource.","example":{"action":"update","description":"An example description.","field_changes":[{"field":"name","locally_edited":true}],"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"string","name":"Example Name","parent_template_config":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"resource":{},"resource_type":"tool","source_template_config":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"action":{"description":"The operation that will be performed. One of `\"add\"`, `\"update\"`, `\"remove\"`, or `\"noop\"`.","example":"update","type":"string"},"description":{"description":"Description of the child resource this change touches, when one is set. `null` when no description is available.","example":"An example description.","type":"string"},"field_changes":{"description":"Field-level diff entries for this change. Populated only when `action` is `\"update\"`; empty or absent for `add`, `remove`, and `noop` entries.","items":{"$ref":"#/components/schemas/AgentUpgradeFieldChange"},"type":"array"},"id":{"description":"Public ID of the existing resource being updated or removed (e.g. `atl_...`, `arn_...`). `null` for `add` entries.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Lookup key of the resource derived from its source template. `null` when the template has no lookup key.","example":"string","type":"string"},"name":{"description":"Human-facing name of the child resource this change touches (tool/routine/skill/computer name, or builtin tool key for unnamed builtin tools). Falls back to the source template's name. `null` for the synthetic `agent_base` entry.","example":"Example Name","type":"string"},"parent_template_config":{"$ref":"#/components/schemas/UpgradeTemplateSummary","description":"Summary of the parent AgentTemplate config (`cfg_...`) being applied in this upgrade."},"resource":{"description":"Resource-type-specific identity details. Tools: `tool_type`, `builtin_tool_key`, `name_prefix`, `handler_type`, `instruction`. Routines: `handler_type`, `preset_name`, `event_type`, `schedule`, `trigger_context`. Skills: `instruction`. Computers: `region`. Only populated keys are present; `null` when nothing is known.","example":{},"type":"object"},"resource_type":{"description":"Type of the child resource being changed. One of `\"agent\"`, `\"tool\"`, `\"routine\"`, `\"skill\"`, or `\"computer\"`.","example":"tool","type":"string"},"source_template_config":{"$ref":"#/components/schemas/UpgradeTemplateSummary","description":"Summary of the specific child template config (`cfg_...`) that defines this resource. `null` when no source template is resolvable."}},"required":["action","parent_template_config","resource_type"],"type":"object"},"AgentUpgradeFieldChange":{"description":"One field-level diff entry within an agent upgrade change, describing how a single field will change.\n`baseline` and `locally_edited` are populated only for `agent_base` entries; child resource entries (tools, routines, skills, computers) carry only `field`, `old`, and `new`.","example":{"field":"name","locally_edited":true},"properties":{"baseline":{"description":"Value that was set by the last-applied template version (pinned baseline). Populated only on `agent_base` field changes. `null` when no baseline is available (legacy agent or deleted version)."},"field":{"description":"Name of the field that will change, e.g. `\"name\"` or `\"identity\"`.","example":"name","type":"string"},"locally_edited":{"description":"`true` when the agent's current value differs from `baseline`, indicating a local edit that this upgrade will overwrite. `false` when the current value matches the baseline. `null` when `baseline` is unavailable. Populated only on `agent_base` field changes.","example":true,"type":"boolean"},"new":{"description":"Incoming value the field will be set to after the upgrade (string, number, boolean, or `null`)."},"old":{"description":"Current value of the field before the upgrade (string, number, boolean, or `null`)."}},"required":["field"],"type":"object"},"AgentUpgradeResponse":{"description":"Response returned by the agent upgrade endpoint, combining the updated agent, its source Solution and template, and the full upgrade diff.","example":{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"upgrade_result":{"changes":[{"action":"update","description":"An example description.","field_changes":[{"field":"name","locally_edited":true}],"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"string","name":"Example Name","parent_template_config":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"resource":{},"resource_type":"tool","source_template_config":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}}],"dry_run":true,"mode":"full","review_fingerprint":"string","status":"upgraded","summary":{"adds":1,"noops":1,"removes":1,"updates":1}}},"properties":{"agent":{"$ref":"#/components/schemas/Agent","description":"The agent after the upgrade has been applied. `null` for dry-run requests where no changes were persisted."},"solution":{"$ref":"#/components/schemas/SolutionSummary","description":"Summary of the parent Solution the agent was upgraded from."},"template":{"$ref":"#/components/schemas/UpgradeTemplateSummary","description":"Summary of the AgentTemplate config (`cfg_...`) that was selected for this upgrade."},"upgrade_result":{"$ref":"#/components/schemas/AgentUpgradeResult","description":"Full upgrade diff including status, mode, dry-run flag, summary counts, and per-resource change list."}},"required":["solution","template","upgrade_result"],"type":"object"},"AgentUpgradeResult":{"description":"The computed diff and outcome of an agent upgrade operation, including the full list of per-resource changes.","example":{"changes":[{"action":"update","description":"An example description.","field_changes":[{"field":"name","locally_edited":true}],"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"string","name":"Example Name","parent_template_config":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"resource":{},"resource_type":"tool","source_template_config":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}}],"dry_run":true,"mode":"full","review_fingerprint":"string","status":"upgraded","summary":{"adds":1,"noops":1,"removes":1,"updates":1}},"properties":{"changes":{"description":"Ordered list of per-resource changes that will be (or were) applied by this upgrade.","items":{"$ref":"#/components/schemas/AgentUpgradeChange"},"type":"array"},"dry_run":{"description":"`true` when the request was a dry run and no changes were persisted to the agent.","example":true,"type":"boolean"},"mode":{"description":"Upgrade mode that was used. One of `\"full\"` (apply all changes) or `\"review\"` (require fingerprint confirmation).","example":"full","type":"string"},"review_fingerprint":{"description":"Opaque fingerprint of the computed diff. Pass this value back as `review_fingerprint` to confirm and apply a `\"review\"` mode upgrade.","example":"string","type":"string"},"status":{"description":"Outcome of the upgrade. `\"ready\"` for a dry-run (no changes applied); `\"upgraded\"` when the upgrade was committed.","example":"upgraded","type":"string"},"summary":{"$ref":"#/components/schemas/AgentUpgradeSummary","description":"Aggregate counts of adds, updates, removes, and noops across all child resources."}},"required":["changes","dry_run","mode","status","summary"],"type":"object"},"AgentUpgradeSummary":{"description":"Aggregate counts of each change type produced by an agent upgrade diff.","example":{"adds":1,"noops":1,"removes":1,"updates":1},"properties":{"adds":{"description":"Number of child resources that will be created by this upgrade.","example":1,"type":"integer"},"noops":{"description":"Number of child resources with no changes in this upgrade.","example":1,"type":"integer"},"removes":{"description":"Number of child resources that will be removed by this upgrade.","example":1,"type":"integer"},"updates":{"description":"Number of child resources that will be updated by this upgrade.","example":1,"type":"integer"}},"required":["adds","noops","removes","updates"],"type":"object"},"Artifact":{"description":"A versioned artifact produced or managed by an agent, such as a generated file, report, or code output.","example":{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1},"properties":{"agent":{"description":"ID of the agent that produced this artifact (`agt_...`). `null` if not agent-produced.","example":"agt_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content_type":{"description":"MIME type of the current version's file, e.g. `\"text/csv\"` or `\"image/png\"`. `null` if no file is attached.","example":"application/json","type":"string"},"created_at":{"description":"When the artifact was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"current_version":{"description":"ID of the current (latest published) artifact version (`artv_...`). `null` if no version has been published.","example":"afv_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"description":{"description":"Optional longer description of the artifact's contents or purpose. `null` if not set.","example":"An example description.","type":"string"},"file":{"description":"Storage file ID for the current version (`fil_...`). `null` if no file is attached.","example":"string","type":"string"},"file_name":{"description":"Original filename of the current version's file, e.g. `\"output.csv\"`. `null` if no file is attached.","example":"Example Name","type":"string"},"file_url":{"description":"Short-lived signed URL for downloading the current version's file. `null` if no file is attached.","example":"https://example.com","type":"string"},"id":{"description":"Artifact ID (`art_...`).","example":"art_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"$ref":"#/components/schemas/ImageSource","description":"Image source metadata for rendering the current version's file inline. Present only when `content_type` starts with `\"image/\"`. `null` otherwise."},"name":{"description":"Human-readable name for the artifact, e.g. `\"Q2 Report\"`. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this artifact belongs to (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment associated with this artifact. `null` if not sandbox-scoped.","example":"string","type":"string"},"team":{"description":"ID of the team that owns this artifact (`tea_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread in which this artifact was created (`thr_...`). `null` if not thread-scoped.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the artifact record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who created this artifact (`usr_...`). `null` if not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version":{"description":"Current version number of the artifact. Increments each time a new version is published.","example":1,"type":"integer"}},"required":["id"],"type":"object"},"Attachment":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"$ref":"#/components/schemas/ImageSource","description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise."},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","items":{"$ref":"#/components/schemas/MediaVariant"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"AuthTokens":{"description":"Credential bundle returned after a successful authentication exchange. Contains the access token, refresh token, and the authenticated user.","example":{"expires_in":3600,"metadata":{"key":"value"},"refresh_token":"rt_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfMDEiLCJleHAiOjE3MTcwMDAwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","token_type":"Bearer","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"expires_in":{"description":"Number of seconds until `token` expires. After this period, use `refresh_token` to obtain a new access token.","example":3600,"type":"integer","x-sdk":"token_expiry"},"metadata":{"description":"Optional auxiliary data associated with this authentication event, such as `onboarding_job_id` when the user is completing onboarding. `null` when no extra context is present.","example":{"key":"value"},"type":"object"},"refresh_token":{"description":"Long-lived opaque refresh token. Use this to obtain a new access token when `token` expires.","example":"rt_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","type":"string","x-sdk":"refresh_token"},"token":{"description":"Short-lived JWT access token. Include this value in the `Authorization: Bearer <token>` header for all authenticated API requests.","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfMDEiLCJleHAiOjE3MTcwMDAwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","type":"string","x-sdk":"access_token"},"token_type":{"description":"Token scheme. Always `\"Bearer\"`.","example":"Bearer","type":"string"},"user":{"$ref":"#/components/schemas/User","description":"The user who authenticated. Contains the user's profile and account details."}},"required":["expires_in","refresh_token","token","token_type","user"],"type":"object"},"AutomationRun":{"description":"A single execution of an automation triggered by a platform event or direct invocation. Captures the run's status, input payload, and final result.","example":{"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","automation":"aut_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","event_id":"string","id":"atr_0aBcDeFgHiJkLmNoPqRsTu","payload":{},"result":{},"status":"pending","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"app":{"description":"ID of the app that owns this automation run (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"automation":{"description":"ID of the automation that was executed (`aut_...`).","example":"aut_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the automation run was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"event_id":{"description":"ID of the platform event that triggered this run. `null` for directly invoked automations.","example":"string","type":"string"},"id":{"description":"Automation run ID (`atr_...`).","example":"atr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"payload":{"description":"The input event payload that triggered this run. Structure varies by automation type. Defaults to an empty object if no payload was provided.","example":{},"type":"object"},"result":{"description":"The output produced after the automation finished executing. Contains workflow-defined keys alongside any returned output. `null` if the run has not yet completed.","example":{},"type":"object"},"status":{"description":"Current execution status of the run. One of `\"pending\"` (queued, not yet started), `\"running\"` (actively executing), `\"completed\"` (finished successfully), `\"failed\"` (finished with an error), or `\"cancelled\"` (stopped before completion).","example":"pending","type":"string"},"team":{"description":"ID of the team that owns this run (`tea_...`). `null` if the run is owned by a user rather than a team.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the automation run record was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this run (`usr_...`). `null` if the run is owned by a team rather than a user.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["app","automation","id","status"],"type":"object"},"BugReport":{"description":"A bug report or freeform feedback submission from any ArchAstro client. Bug reports are write-only for the submitting user and are not returned by any public list or show endpoint.","example":{"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","client":"agent_network_web","client_version":"1.4.2","context":{"key":"value"},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"bgr_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z"},"properties":{"app":{"description":"App ID (`dap_...`) of the developer app through which the report was submitted.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"client":{"description":"The client application that submitted this report. One of `\"agent_network_web\"`, `\"cli\"`, or `\"developer_portal\"`.","example":"agent_network_web","type":"string"},"client_version":{"description":"Version string of the submitting client at the time of submission, e.g. `\"1.4.2\"`.","example":"1.4.2","type":"string"},"context":{"description":"Optional free-form JSON object providing additional context captured by the client (e.g. viewport size, active route). `null` when no context was provided. Maximum 5 KB when serialized.","example":{"key":"value"},"type":"object"},"created_at":{"description":"When the bug report was submitted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Freeform text describing the issue or feedback, as entered by the user. Up to 10,000 characters.","example":"An example description.","type":"string"},"id":{"description":"Bug report ID (`bgr_...`).","example":"bgr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org":{"description":"Organization ID (`org_...`) scoping this report. `null` when the user's account is not part of an organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Sandbox ID (`dsb_...`) active at submission time. `null` when the report was not submitted from a sandbox context.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"team":{"description":"Team ID (`tem_...`) of the team the submitting user belonged to at submission time. `null` when the user had no active team.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the bug report record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["client","client_version","description","id"],"type":"object"},"BuiltinTool":{"description":"A single callable tool within a builtin tool catalog entry. Represents one discrete function an agent can invoke.","example":{"description":"An example description.","name":"Example Name"},"properties":{"description":{"description":"Human-readable explanation of what the tool does. Surfaced to the agent as part of tool selection context. `null` when no description has been defined.","example":"An example description.","type":"string"},"name":{"description":"Machine-readable name of the tool as it is registered with the agent runtime, e.g. `\"web_search\"` or `\"github_create_issue\"`.","example":"Example Name","type":"string"}},"required":["name"],"type":"object"},"BuiltinToolCatalogEntry":{"description":"A catalog entry describing a category of platform-provided (builtin) tools that can be enabled for an agent. Each entry groups one or more individual tools under a shared key, label, and configuration schema.","example":{"config_schema":{},"description":"An example description.","instruction":"string","key":"web_search","label":"Web Search","multi_instance_mode":"namespaced","providers":["string"],"requires_integration":true,"server_tool_type":"string","tools":[{"description":"An example description.","name":"Example Name"}]},"properties":{"config_schema":{"description":"JSON Schema object describing the configuration options for this tool category. Clients should use this schema to render and validate configuration forms before submitting. `null` when no configuration is needed.","example":{},"type":"object"},"description":{"description":"Short prose description of what this tool category does. Suitable for display in setup UIs. `null` when no description has been defined.","example":"An example description.","type":"string"},"instruction":{"description":"Additional guidance surfaced to the agent at runtime when this tool category is enabled. `null` when no custom instruction is set.","example":"string","type":"string"},"key":{"description":"Unique slug identifying this tool category, e.g. `\"web_search\"` or `\"github\"`.","example":"web_search","type":"string"},"label":{"description":"Human-readable display name for the tool category, e.g. `\"Web Search\"`. `null` when no label has been assigned.","example":"Web Search","type":"string"},"multi_instance_mode":{"description":"Controls whether multiple instances of this tool category may be enabled simultaneously. `\"namespaced\"` — multiple instances allowed; each must carry a `name_prefix` to distinguish them. `\"passthrough\"` — multiple instances allowed without a `name_prefix`; names are derived from the underlying source. `null` — single-instance only.","example":"namespaced","type":"string"},"providers":{"description":"List of integration provider slugs that can back this tool category, e.g. `[\"github\", \"gitlab\"]`. Empty when the tool is provider-agnostic.","example":["string"],"items":{"type":"string"},"type":"array"},"requires_integration":{"description":"Whether enabling this tool category requires the user to connect a third-party integration. `true` means at least one active integration of the appropriate type must exist before the tool can be used.","example":true,"type":"boolean"},"server_tool_type":{"description":"Internal type identifier used by the platform server when registering these tools. `null` for client-side-only tool categories.","example":"string","type":"string"},"tools":{"description":"Array of individual tool definitions included in this category. Each entry describes a single callable tool with its own name and description.","items":{"$ref":"#/components/schemas/BuiltinTool"},"type":"array"}},"required":["key"],"type":"object"},"ChannelAck":{"description":"Empty acknowledgement payload returned by channel message handlers that produce no data. The wire envelope is `{\"status\": \"ok\", \"response\": {}}`.","properties":{},"type":"object"},"ChatForkThreadResponse":{"description":"Response returned after forking a chat thread. Contains the new thread, its initial chat-room snapshot, and the owning team when applicable.","example":{"chat_model":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"properties":{"chat_model":{"$ref":"#/components/schemas/ChatRoomModel","description":"Initial chat-room render snapshot for the forked thread, including members and loaded messages. `null` for transient threads whose room model is suppressed."},"team":{"$ref":"#/components/schemas/Team","description":"Team that owns the forked thread. Present only when the original thread was team-scoped; `null` for personal threads."},"thread":{"$ref":"#/components/schemas/Thread","description":"The newly-created thread produced by the fork operation."}},"required":["thread"],"type":"object"},"ChatLoadMoreMessagesResponse":{"description":"Response returned after loading an additional page of chat messages. Contains a refreshed chat-room snapshot with the newly-fetched messages merged in.","example":{"data":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}}},"properties":{"data":{"$ref":"#/components/schemas/ChatRoomModel","description":"Updated chat-room snapshot for the thread, incorporating the newly-loaded page of messages alongside any previously loaded messages."}},"required":["data"],"type":"object"},"ChatMarkThreadReadResponse":{"description":"Response returned after marking a chat thread as read. Confirms that the read marker was successfully recorded for the authenticated user.","example":{"success":true},"properties":{"success":{"description":"Indicates whether the read marker was successfully applied. Always `true` on success; errors are returned as channel error replies rather than a `false` value here.","example":true,"type":"boolean"}},"required":["success"],"type":"object"},"ChatMember":{"description":"A participant in a chat thread, which may be either a human user or an AI agent. Exactly one of `user` or `agent` is populated depending on `type`.","example":{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"agent":{"$ref":"#/components/schemas/Agent","description":"Full agent object for this member. Populated when `type` is `\"agent\"`; `null` for user members."},"membership_type":{"description":"Role of this member within the thread. Common values are `\"owner\"` and `\"member\"`. `null` when the membership type is not applicable.","example":"owner","type":"string"},"type":{"description":"Kind of participant. One of `\"user\"` (a human user) or `\"agent\"` (an AI agent).","example":"user","type":"string"},"user":{"$ref":"#/components/schemas/User","description":"Full user object for this member. Populated when `type` is `\"user\"`; `null` for agent members."}},"required":["type"],"type":"object"},"ChatMessageListResponse":{"description":"Response returned when listing the messages of a joined chat thread. Contains the set of messages currently loaded for the thread.","example":{"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}]},"properties":{"messages":{"description":"Ordered array of message objects currently loaded for the thread, from oldest to newest. Use the `load_more_messages` channel message to fetch earlier pages.","items":{"$ref":"#/components/schemas/Message"},"type":"array"}},"required":["messages"],"type":"object"},"ChatPostMessageResponse":{"description":"Response returned after successfully posting a message to a chat thread. Contains the persisted message object echoed back to the sender.","example":{"message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}},"properties":{"message":{"$ref":"#/components/schemas/Message","description":"The message that was created and stored. Contains the full message object including its assigned ID, author, content, and timestamps."}},"required":["message"],"type":"object"},"ChatRoomModel":{"description":"A point-in-time snapshot of a chat room's state, including its loaded messages, member roster, and pagination cursors. Returned when loading or refreshing a thread's message list.","example":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"properties":{"after_cursor":{"description":"Opaque cursor to pass when fetching messages newer than those in this snapshot. `null` when this snapshot already reflects the latest messages.","example":"string","type":"string"},"agent":{"$ref":"#/components/schemas/Agent","description":"The agent associated with this chat room. `null` when no agent is attached."},"before_cursor":{"description":"Opaque cursor to pass when fetching messages older than those in this snapshot. `null` when the beginning of the thread history has been reached.","example":"string","type":"string"},"is_transient":{"description":"Whether this thread is ephemeral. Transient threads are not retained in long-term storage and may be deleted when the session ends.","example":true,"type":"boolean"},"members":{"description":"All active members of the chat room, including both human users and agents.","items":{"$ref":"#/components/schemas/ChatMember"},"type":"array"},"messages":{"description":"The page of messages currently loaded for the thread, ordered chronologically. Use `before_cursor` or `after_cursor` to page through additional history.","items":{"$ref":"#/components/schemas/Message"},"type":"array"},"messages_loaded_on_last_update":{"description":"Number of messages that were added to the snapshot in the most recent incremental update. `null` on the initial load.","example":1,"type":"integer"},"team":{"$ref":"#/components/schemas/Team","description":"The team that owns this thread. `null` for threads scoped to an individual user rather than a team."},"thread":{"$ref":"#/components/schemas/Thread","description":"The parent thread whose message history and membership this snapshot represents."}},"required":["is_transient","members","messages","thread"],"type":"object"},"ComputerExecResult":{"description":"The result of executing a shell command on an agent's computer environment. Contains the captured output and the process exit code.","example":{"exit_code":0,"output":"Hello, world!\n"},"properties":{"exit_code":{"description":"The UNIX exit code returned by the process. `0` indicates success; any non-zero value indicates an error. `null` if the process did not terminate normally.","example":0,"type":"integer"},"output":{"description":"The combined stdout and stderr output produced by the command. `null` if the command produced no output.","example":"Hello, world!\n","type":"string"}},"type":"object"},"Config":{"description":"A versioned config file owned by a team or user, representing a typed artifact such as an agent definition or API tool specification.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","current_version":{"change_description":"An example description.","content_hash":"sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824","created_at":"2024-01-01T00:00:00Z","data":{},"id":"cfv_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","version_number":1},"id":"cfg_0aBcDeFgHiJkLmNoPqRsTu","is_archived":true,"kind":"Agent","lookup_key":"string","mime_type":"application/json","org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent":"cfg_0aBcDeFgHiJkLmNoPqRsTu","parent_solution":"cfg_0aBcDeFgHiJkLmNoPqRsTu","raw_content":"string","relative_path":"string","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","virtual_path":"agents/my-agent.yaml"},"properties":{"agent":{"description":"Agent ID (`agt_...`) associated with this config. `null` if not linked to an agent.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When this config was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"current_version":{"$ref":"#/components/schemas/ConfigVersion","description":"The most recently saved version of this config. `null` if the config has never been saved with content."},"id":{"description":"Config ID (`cfg_...`).","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_archived":{"description":"Whether this config has been archived. Archived configs are hidden from default listings but remain accessible by ID.","example":true,"type":"boolean"},"kind":{"description":"Type of config, e.g. `\"Agent\"` or `\"APITool\"`. Determines which fields and validation rules apply.","example":"Agent","type":"string"},"lookup_key":{"description":"Stable, user-defined key used to look up this config without knowing its ID. `null` if not set.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the config's content, e.g. `\"text/yaml\"`. `null` if not determined.","example":"application/json","type":"string"},"org":{"description":"Organization ID (`org_...`) this config belongs to. `null` for configs not scoped to an org.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent":{"description":"Parent bundle config ID (`cfg_...`). Present only for configs that are children of a bundle; `null` otherwise.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_solution":{"description":"ID (`cfg_...`) of the solution config this config was imported with. `null` if the config was not imported via a solution.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"raw_content":{"description":"Raw file content as a string. Populated only for system configs; `null` for user-owned configs.","example":"string","type":"string"},"relative_path":{"description":"Path of this config relative to its parent bundle root. Present only for bundle children; `null` otherwise.","example":"string","type":"string"},"sandbox":{"description":"Sandbox identifier this config belongs to. `null` for production configs.","example":"string","type":"string"},"team":{"description":"Team ID (`tea_...`) that owns this config. `null` for personal (user-scoped) configs.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When this config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"User ID (`usr_...`) who owns this config. `null` for team-scoped configs.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"virtual_path":{"description":"Logical path uniquely identifying this config within its team, e.g. `\"agents/my-agent.yaml\"`. `null` for configs without an explicit path.","example":"agents/my-agent.yaml","type":"string"}},"required":["id","kind"],"type":"object"},"ConfigFacets":{"description":"Aggregated facet counts for the authenticated viewer's configs. Reports all distinct kinds and path prefixes across the full dataset, regardless of any active list filters.","example":{"kinds":[{"count":1,"kind":"Agent"}],"path_prefixes":[{"count":1,"prefix":"agents/"}]},"properties":{"kinds":{"description":"All distinct config kinds present in the viewer's dataset, each with its total count. Use these values to populate kind filter options.","items":{"$ref":"#/components/schemas/ConfigKindFacet"},"type":"array"},"path_prefixes":{"description":"All distinct slash-terminated path prefixes present in the viewer's dataset, each with its total count. Use these values to populate path prefix filter options.","items":{"$ref":"#/components/schemas/ConfigPathPrefixFacet"},"type":"array"}},"required":["kinds","path_prefixes"],"type":"object"},"ConfigKindFacet":{"description":"A facet entry grouping configs by kind, returning the kind name and the number of matching configs visible to the authenticated viewer.","example":{"count":1,"kind":"Agent"},"properties":{"count":{"description":"Number of configs of this kind that are visible to the authenticated viewer. Always `0` or greater.","example":1,"type":"integer"},"kind":{"description":"The config kind identifier (e.g., `\"Agent\"`, `\"WorkflowGraph\"`). Matches the `kind` field on config objects.","example":"Agent","type":"string"}},"required":["count","kind"],"type":"object"},"ConfigKindSchema":{"description":"The JSON Schema definition and sample YAML for a specific config kind, used to validate and scaffold new configs of that kind.","example":{"json_schema":{},"kind":"Agent","sample_yaml":"string"},"properties":{"json_schema":{"description":"JSON Schema object describing the valid structure of a config of this kind. `null` when no schema has been registered for this kind.","example":{},"type":"object"},"kind":{"description":"The config kind identifier (e.g., `\"Agent\"`, `\"WorkflowGraph\"`). Matches the `kind` field on config objects.","example":"Agent","type":"string"},"sample_yaml":{"description":"A sample YAML document illustrating a minimal valid config of this kind. `null` when no sample has been registered for this kind.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"ConfigPathPrefixFacet":{"description":"A facet entry grouping configs by their leading path segment, returning the prefix and the number of matching configs visible to the authenticated viewer.","example":{"count":1,"prefix":"agents/"},"properties":{"count":{"description":"Number of configs whose `virtual_path` begins with this prefix that are visible to the authenticated viewer. Always `0` or greater.","example":1,"type":"integer"},"prefix":{"description":"The leading path segment of the config's `virtual_path`, always slash-terminated (e.g., `\"agents/\"`, `\"__editor/\"`). Pass this value as the `path_prefix` filter to narrow config listings.","example":"agents/","type":"string"}},"required":["count","prefix"],"type":"object"},"ConfigVersion":{"description":"A single immutable snapshot of a config's content, created each time the config is saved.","example":{"change_description":"An example description.","content_hash":"sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824","created_at":"2024-01-01T00:00:00Z","data":{},"id":"cfv_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","version_number":1},"properties":{"change_description":{"description":"Human-readable summary of what changed in this version, as provided by the author. `null` if no description was supplied.","example":"An example description.","type":"string"},"content_hash":{"description":"SHA-256 digest of the raw config content encoded as `sha256:<hex>`. Uses the same algorithm as the CLI `computeContentHash` helper. `null` for versions created before this field was introduced.","example":"sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824","type":"string"},"created_at":{"description":"When this config version was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"data":{"description":"Arbitrary structured metadata stored alongside this version. `null` when no extra data was provided.","example":{},"type":"object"},"id":{"description":"Config version ID (`cfv_...`).","example":"cfv_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this config version. `null` for personal configs.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Sandbox ID (`sbx_...`) this version was saved under. `null` for production configs.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version_number":{"description":"Monotonically increasing integer identifying this version within the config. Starts at 1.","example":1,"type":"integer"}},"required":["id","version_number"],"type":"object"},"ContextDocument":{"description":"A context document stored within a context source. Carries metadata and size information only; retrieve the full text content via the `/content` endpoint.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","id":"cdo_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"source":"cso_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","total_lines":1,"total_size":2048,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"ID of the agent that owns this document (`agi_...`). `null` if owned by a user or team.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the document was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the backing storage file (`fil_...`) when the document is file-backed. `null` for inline documents.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"id":{"description":"Context document ID (`cdo_...`).","example":"cdo_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the document. Shape varies by source type.","example":{"key":"value"},"type":"object"},"source":{"description":"ID of the context source this document belongs to (`cso_...`).","example":"cso_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"team":{"description":"ID of the team that owns this document (`tem_...`). `null` if owned by a user or agent.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable display title of the document. `null` if no title has been set.","example":"Example Title","type":"string"},"total_lines":{"description":"Total number of lines in the document's text content. `0` if the document has no content.","example":1,"type":"integer"},"total_size":{"description":"Total byte size of the document's text content. `0` if the document has no content.","example":2048,"type":"integer"},"updated_at":{"description":"When the document was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this document (`usr_...`). `null` if owned by a team or agent.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"ContextDocumentContent":{"description":"The text content of a context document, optionally sliced by line or byte range. Includes totals and slice boundary fields for the requested unit.","example":{"content":"This is the document content.","end_byte":1,"end_line":1,"id":"cdo_0aBcDeFgHiJkLmNoPqRsTu","limit":100,"metadata":{"key":"value"},"offset":1,"start_byte":1,"start_line":1,"title":"Example Title","total_lines":1,"total_size":2048,"unit":"lines"},"properties":{"content":{"description":"Text of the document. Contains the full content when no `offset`/`limit` was requested, or only the requested slice otherwise.","example":"This is the document content.","type":"string"},"end_byte":{"description":"Zero-based exclusive index of the last byte in `content` (i.e. the slice covers bytes `start_byte..end_byte-1`). Populated only when `unit` is `\"bytes\"`; `null` otherwise.","example":1,"type":"integer"},"end_line":{"description":"1-indexed line number of the last line included in `content` (i.e. the slice covers lines `start_line` through `end_line` inclusive). Populated only when `unit` is `\"lines\"`; `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Context document ID (`cdo_...`).","example":"cdo_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"limit":{"description":"The `limit` value echoed from the request. `null` when no limit was requested.","example":100,"type":"integer"},"metadata":{"description":"Arbitrary key-value metadata attached to the document, such as source URL or author. `null` if no metadata was recorded.","example":{"key":"value"},"type":"object"},"offset":{"description":"The `offset` value echoed from the request. `null` when no offset was requested.","example":1,"type":"integer"},"start_byte":{"description":"Zero-based index of the first byte included in `content`. Populated only when `unit` is `\"bytes\"`; `null` otherwise.","example":1,"type":"integer"},"start_line":{"description":"1-indexed line number of the first line included in `content`. Populated only when `unit` is `\"lines\"`; `null` otherwise.","example":1,"type":"integer"},"title":{"description":"Human-readable display title of the document. `null` if the document has no title set.","example":"Example Title","type":"string"},"total_lines":{"description":"Total number of lines in the document's full content, regardless of any slice.","example":1,"type":"integer"},"total_size":{"description":"Total byte size of the document's full content, regardless of any slice.","example":2048,"type":"integer"},"unit":{"description":"Slice unit used when `offset` and `limit` were provided. One of `\"lines\"` (default) or `\"bytes\"`. `null` when no slice was requested.","example":"lines","type":"string"}},"required":["content","id","total_lines","total_size"],"type":"object"},"ContextIngestion":{"description":"A context ingestion job that processes a context source and populates its documents. Tracks status and timing from submission through completion or failure.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","completed_at":"2024-01-01T00:00:00Z","created_at":"2024-01-01T00:00:00Z","error":{},"id":"cig_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"source":"cso_0aBcDeFgHiJkLmNoPqRsTu","started_at":"2024-01-01T00:00:00Z","status":"pending","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"ID of the agent that initiated this ingestion (`agi_...`). `null` if initiated by a user.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"completed_at":{"description":"When the ingestion job finished, either successfully or with a failure. `null` if still in progress.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"created_at":{"description":"When the ingestion was submitted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"error":{"description":"Structured error details when the ingestion has `status: \"failed\"`. `null` for any other status.","example":{},"type":"object"},"id":{"description":"Context ingestion ID (`cig_...`).","example":"cig_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"metadata":{"description":"Arbitrary key-value metadata associated with this ingestion run. Shape is caller-defined.","example":{"key":"value"},"type":"object"},"source":{"description":"ID of the context source being ingested (`cso_...`). `null` if the source has been deleted.","example":"cso_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"started_at":{"description":"When the ingestion job began processing. `null` if the job is still pending.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"status":{"description":"Current processing status. One of `\"pending\"`, `\"running\"`, `\"awaiting_callback\"`, `\"succeeded\"`, or `\"failed\"`.","example":"pending","type":"string"},"team":{"description":"ID of the team that owns this ingestion (`tem_...`). `null` if owned by a user or agent.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the ingestion record was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that initiated this ingestion (`usr_...`). `null` if initiated by an agent.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id","status"],"type":"object"},"CustomObject":{"description":"A custom object belonging to an organization. Custom objects store arbitrary structured data defined by a schema type and are scoped to an org, team, or user.","example":{"created_at":"2024-01-01T00:00:00Z","fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","row_key":"string","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","schema_type":"contact","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1},"properties":{"created_at":{"description":"When the custom object was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"fields":{"description":"Map of field names to their current values as defined by the object's schema type.","example":{"key":"value"},"type":"object"},"id":{"description":"Unique identifier for the custom object (`cobj_...`).","example":"cobj_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org":{"description":"ID of the organization this object belongs to (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"row_key":{"description":"An optional stable key used to identify this object by a caller-controlled string rather than its generated ID. `null` if not set.","example":"string","type":"string"},"sandbox":{"description":"ID of the sandbox environment this object is scoped to (`dsb_...`). `null` for production objects.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"schema_type":{"description":"The lookup key of the schema type that defines this object's field structure. `null` if the schema type has not been set.","example":"contact","type":"string"},"team":{"description":"ID of the team that owns this object (`tem_...`). `null` if the object is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the custom object was last modified (ISO 8601). `null` if the object has never been updated after creation.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this object (`usr_...`). `null` if the object is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version":{"description":"Optimistic concurrency version of the object. Increments with each successful update; pass this value in write operations to detect conflicting changes.","example":1,"type":"integer"}},"required":["id"],"type":"object"},"CustomObjectListResponse":{"description":"A paginated page of custom objects returned by a list operation. Use the pagination fields to navigate through result sets.","example":{"data":[{"created_at":"2024-01-01T00:00:00Z","fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","row_key":"string","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","schema_type":"contact","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":1,"total_pages":1},"properties":{"data":{"description":"Array of custom objects for the current page.","items":{"$ref":"#/components/schemas/CustomObject"},"type":"array"},"has_next":{"description":"`true` if a subsequent page of results exists; `false` if this is the last page.","example":true,"type":"boolean"},"has_prev":{"description":"`true` if a preceding page of results exists; `false` if this is the first page.","example":true,"type":"boolean"},"page":{"description":"The current page number (1-indexed).","example":1,"type":"integer"},"page_size":{"description":"Maximum number of results returned per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of custom objects matching the query across all pages.","example":1,"type":"integer"},"total_pages":{"description":"Total number of pages available for the current query.","example":1,"type":"integer"}},"required":["data","has_next","has_prev","page","page_size","total_entries","total_pages"],"type":"object"},"CustomObjectUpdateFieldsResponse":{"description":"Response returned after updating one or more fields on a custom object. Confirms the object that was modified and the field values that were applied.","example":{"fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"fields":{"description":"Map of field names to their new values as applied during the update. Only the fields that were included in the update request are present.","example":{"key":"value"},"type":"object"},"id":{"description":"ID of the custom object that was updated (`cobj_...`).","example":"cobj_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["fields","id"],"type":"object"},"DeviceAuthorizationResponse":{"description":"The initial response from an OAuth 2.0 Device Authorization Grant request, containing the codes and URIs needed to complete device authentication.","example":{"device_code":"string","expires_in":1800,"interval":5,"user_code":"WDJB-MJHT","verification_uri":"https://example.com","verification_uri_complete":"string"},"properties":{"device_code":{"description":"Opaque code identifying this device authorization session. Pass this value when polling the token endpoint; do not display it to the user.","example":"string","type":"string"},"expires_in":{"description":"Number of seconds until the `device_code` and `user_code` expire. After expiry the user must restart the authorization flow.","example":1800,"type":"integer"},"interval":{"description":"Minimum number of seconds to wait between polling attempts on the token endpoint. Polling more frequently will result in a `slow_down` error.","example":5,"type":"integer"},"user_code":{"description":"Short alphanumeric code the user must enter at `verification_uri` to authorize the device.","example":"WDJB-MJHT","type":"string"},"verification_uri":{"description":"URL the user visits to enter the `user_code` and approve the authorization request.","example":"https://example.com","type":"string"},"verification_uri_complete":{"description":"Full verification URL with the `user_code` pre-filled as a query parameter. Display this as a QR code or deep link to reduce manual entry.","example":"string","type":"string"}},"required":["device_code","expires_in","interval","user_code","verification_uri","verification_uri_complete"],"type":"object"},"DeviceAuthorizationStatusResponse":{"description":"The result of a completed OAuth 2.0 Device Authorization flow, indicating whether the user approved or denied the device's access request.","example":{"status":"approved"},"properties":{"status":{"description":"Outcome of the device authorization request. One of `\"approved\"` (the user granted access) or `\"denied\"` (the user rejected or cancelled the request).","example":"approved","type":"string"}},"required":["status"],"type":"object"},"HealthActionListResponse":{"description":"List response containing agent health actions for a given agent or organization.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","depends_on":["string"],"description":"An example description.","id":"aha_0aBcDeFgHiJkLmNoPqRsTu","kind":"env_var","last_verified_at":"2024-01-01T00:00:00Z","last_verifier_message":"string","org":"org_0aBcDeFgHiJkLmNoPqRsTu","params":{"key":"value"},"required":true,"sort_order":1,"source":"setup","status":"pending","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","verify_config":{}}]},"properties":{"data":{"description":"Array of agent health action objects representing setup checklist items and probe-detected issues.","items":{"$ref":"#/components/schemas/AgentHealthAction"},"type":"array"}},"required":["data"],"type":"object"},"ImageSource":{"description":"Resolved metadata for an image, including its delivery URL, dimensions, and optional references to the underlying storage file or media record.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"Installation":{"description":"An installation representing a connection between an agent and an external service or enablement channel. Tracks configuration, lifecycle state, and any bound integration.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","config":{},"created_at":"2024-01-01T00:00:00Z","id":"cin_0aBcDeFgHiJkLmNoPqRsTu","kind":"enablement/github_app","lookup_key":"string","shared_integration":"int_0aBcDeFgHiJkLmNoPqRsTu","state":"active","status_payload":{},"updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent that owns this installation (`agi_...`). `null` if the installation has no agent owner.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"config":{"description":"Kind-specific configuration object for this installation. Shape depends on the `kind` value. `null` if the kind requires no configuration.","example":{},"type":"object"},"created_at":{"description":"When the installation was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Installation ID (`cin_...`).","example":"cin_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Slug identifying the type of external service this installation connects to, e.g. `\"enablement/github_app\"` or `\"integration/gmail\"`. `null` if not set.","example":"enablement/github_app","type":"string"},"lookup_key":{"description":"Caller-assigned stable identifier for this installation, used to reference it in knowledge search `source_refs`. `null` if no lookup key was provided at creation time.","example":"string","type":"string"},"shared_integration":{"description":"ID of the shared org- or app-level integration bound to this installation (`int_...`). `null` if no integration has been bound.","example":"int_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"state":{"description":"Current lifecycle state of the installation. One of `\"pending\"`, `\"active\"`, `\"paused\"`, or `\"error\"`. `\"error\"` indicates the installation was suspended due to a policy or compliance issue and requires attention.","example":"active","type":"string"},"status_payload":{"description":"Provider-supplied status detail for this installation, set during activation or event processing. `null` if no status has been reported.","example":{},"type":"object"},"updated_at":{"description":"When the installation record was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"InstallationKind":{"description":"A supported installation kind describing a category of external service or enablement channel an agent can be connected to.","example":{"accepts_sources":true,"category":"integration","config_schema":{},"description":"An example description.","kind":"enablement/github_app","label":"GitHub App","provider":"github","requires_integration":true},"properties":{"accepts_sources":{"description":"When `true`, sources can be attached to installations of this kind to supply additional context to the agent.","example":true,"type":"boolean"},"category":{"description":"Grouping category for UI display purposes, e.g. `\"enablement\"` or `\"integration\"`. `null` if uncategorized.","example":"integration","type":"string"},"config_schema":{"description":"JSON Schema object describing the shape of the `config` parameter accepted when creating or updating an installation of this kind. `null` if the kind accepts no configuration.","example":{},"type":"object"},"description":{"description":"Short prose description of what this kind connects to and how it is used. `null` if no description is defined.","example":"An example description.","type":"string"},"kind":{"description":"Unique slug identifying this installation kind, e.g. `\"enablement/github_app\"`, `\"integration/gmail\"`, or `\"web/site\"`. Pass this value as `kind` when creating an installation.","example":"enablement/github_app","type":"string"},"label":{"description":"Human-readable display name for this kind, e.g. `\"GitHub App\"`. `null` if the kind has no label defined.","example":"GitHub App","type":"string"},"provider":{"description":"Identifier of the external provider this kind connects to, e.g. `\"github\"` or `\"slack\"`. `null` for kinds with no specific provider.","example":"github","type":"string"},"requires_integration":{"description":"When `true`, this kind requires an integration to be provided (either inline or via `shared_integration`) before the installation can be activated.","example":true,"type":"boolean"}},"required":["kind"],"type":"object"},"InstallationKindListResponse":{"description":"List response containing all available installation kinds that can be used when configuring an agent installation.","example":{"data":[{"accepts_sources":true,"category":"integration","config_schema":{},"description":"An example description.","kind":"enablement/github_app","label":"GitHub App","provider":"github","requires_integration":true}]},"properties":{"data":{"description":"Array of installation kind objects describing the available integration types and their configuration requirements.","items":{"$ref":"#/components/schemas/InstallationKind"},"type":"array"}},"required":["data"],"type":"object"},"InstallationListResponse":{"description":"Paginated list response containing installation objects for an agent.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","config":{},"created_at":"2024-01-01T00:00:00Z","id":"cin_0aBcDeFgHiJkLmNoPqRsTu","kind":"enablement/github_app","lookup_key":"string","shared_integration":"int_0aBcDeFgHiJkLmNoPqRsTu","state":"active","status_payload":{},"updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of installation objects returned for the current page.","items":{"$ref":"#/components/schemas/Installation"},"type":"array"}},"required":["data"],"type":"object"},"InstallationSource":{"description":"A source attached to an installation that supplies content for the agent's context. Sources are processed asynchronously after creation.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","context_installation":"cin_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","id":"cso_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"parent_source":"cso_0aBcDeFgHiJkLmNoPqRsTu","payload":{},"state":"active","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"file/document","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"ID of the agent that owns this source (`agi_...`). `null` if the source is not agent-owned.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"context_installation":{"description":"ID of the installation this source belongs to (`cin_...`). `null` if the source is not attached to an installation.","example":"cin_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the source was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Source ID (`cso_...`).","example":"cso_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"metadata":{"description":"Arbitrary key-value metadata associated with this source. Shape is caller-defined. `null` if no metadata was set.","example":{"key":"value"},"type":"object"},"parent_source":{"description":"ID of the parent source (`cso_...`) when this source was derived from another source. `null` for top-level sources.","example":"cso_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"payload":{"description":"Type-specific payload provided when the source was created. The shape depends on the `type` value. `null` if no payload was supplied.","example":{},"type":"object"},"state":{"description":"Current lifecycle state of this source. One of `\"active\"` (ingestion running normally) or `\"paused\"` (ingestion suspended). Note that per-run ingestion progress is tracked separately and is not exposed on this field.","example":"active","type":"string"},"team":{"description":"ID of the team associated with this source (`tem_...`). `null` if the source has no team association.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the conversation thread linked to this source (`thr_...`). `null` if the source is not thread-scoped.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"type":{"description":"Slug identifying the kind of content this source provides, e.g. `\"file/document\"` or `\"web/link\"`. `null` if the type is not set.","example":"file/document","type":"string"},"updated_at":{"description":"When the source record was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user associated with this source (`usr_...`). `null` if the source has no user association.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"InstallationSourceListResponse":{"description":"Paginated list response containing installation source objects attached to an installation.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","context_installation":"cin_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","id":"cso_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"parent_source":"cso_0aBcDeFgHiJkLmNoPqRsTu","payload":{},"state":"active","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"file/document","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}]},"properties":{"data":{"description":"Array of installation source objects returned for the current page.","items":{"$ref":"#/components/schemas/InstallationSource"},"type":"array"}},"required":["data"],"type":"object"},"InstalledConfigEntry":{"description":"A slim summary of a single config record created during an agent install transaction. Returned as an entry in `AgentCreateResponse.installed_configs`.","example":{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"my-skill","kind":"Skill","lookup_key":"my-skill"},"properties":{"id":{"description":"ID of the persisted config record (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Caller-supplied correlation key echoed back from the request. For top-level configs this is the original `lookup_key` (before any suffix is applied). For skill file children it is the composite `\"<skill_lookup_key>:<relative_path>\"` string, since file rows have no lookup_key of their own.","example":"my-skill","type":"string"},"kind":{"description":"Type of config that was created. One of `\"Skill\"`, `\"File\"`, `\"Script\"`, `\"AgentTemplate\"`, or `\"Config\"`.","example":"Skill","type":"string"},"lookup_key":{"description":"Stored `lookup_key` for this config after any suffix has been applied. `null` for `File` children inside a skill bundle, which are keyed by `(parent_id, relative_path)` rather than by `lookup_key`.","example":"my-skill","type":"string"}},"required":["id","key","kind"],"type":"object"},"InviteCreator":{"description":"A minimal, public-safe projection of the user who sent an invite, exposed to unauthenticated recipients so they can render a join screen.\nOnly identity fields are included; sensitive fields such as email address and organization membership are omitted.","example":{"id":"usr_0aBcDeFgHiJkLmNoPqRsTu","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"id":{"description":"User ID of the inviter (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"name":{"description":"Display name of the inviter. `null` when the inviter has not set a name on their account.","example":"Example Name","type":"string"},"profile_picture":{"$ref":"#/components/schemas/ImageSource","description":"Profile picture of the inviter. `null` when the inviter has no profile picture set."}},"required":["id"],"type":"object"},"KeyValueStorageEntry":{"description":"A single key-value storage entry belonging to a user. Represents one key/value pair written to a user's isolated storage namespace within an app.","example":{"created_at":"2024-01-01T00:00:00Z","key":"theme","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","value":"dark"},"properties":{"created_at":{"description":"When this storage entry was first created (ISO 8601). `null` if not yet persisted.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"key":{"description":"The string key used to store and look up this entry.","example":"theme","type":"string"},"updated_at":{"description":"When this storage entry was last updated (ISO 8601). `null` if not yet persisted.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this storage entry (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"value":{"description":"The string value stored under `key` for this user.","example":"dark","type":"string"}},"required":["key","user","value"],"type":"object"},"KeyValueStorageEntryPage":{"description":"Paginated response envelope for the dual-mode key-value storage list endpoint. End-user (user-JWT) callers receive only `data`; developer and server-to-server callers also receive pagination metadata fields.","example":{"data":[{"created_at":"2024-01-01T00:00:00Z","key":"theme","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","user_email":"user@example.com","user_name":"Example Name","value":"dark"}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":1,"total_pages":1},"properties":{"data":{"description":"Array of key-value storage entries for the current page.","items":{"$ref":"#/components/schemas/KeyValueStorageEntryWithUser"},"type":"array"},"has_next":{"description":"Whether a subsequent page exists. `false` when the current page is the last page. Present only for developer and server-to-server callers.","example":true,"type":"boolean"},"has_prev":{"description":"Whether a preceding page exists. `false` when the current page is the first page. Present only for developer and server-to-server callers.","example":true,"type":"boolean"},"page":{"description":"Current page number (1-indexed). Present only for developer and server-to-server callers.","example":1,"type":"integer"},"page_size":{"description":"Maximum number of results returned per page. Present only for developer and server-to-server callers.","example":20,"type":"integer"},"total_entries":{"description":"Total number of storage entries matching the applied filters across all pages. Present only for developer and server-to-server callers.","example":1,"type":"integer"},"total_pages":{"description":"Total number of pages available given the current `page_size`. Present only for developer and server-to-server callers.","example":1,"type":"integer"}},"required":["data"],"type":"object"},"KeyValueStorageEntryWithUser":{"description":"A key-value storage entry enriched with owner information. Developer and server-to-server callers receive `user_email` and `user_name` populated; end-user (user-JWT) callers receive those fields as `null`.","example":{"created_at":"2024-01-01T00:00:00Z","key":"theme","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","user_email":"user@example.com","user_name":"Example Name","value":"dark"},"properties":{"created_at":{"description":"When this storage entry was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"key":{"description":"The string key used to store and look up this entry.","example":"theme","type":"string"},"updated_at":{"description":"When this storage entry was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this storage entry (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"user_email":{"description":"Email address of the owning user. `null` for end-user (user-JWT) callers; populated for developer and server-to-server callers.","example":"user@example.com","type":"string"},"user_name":{"description":"Display name of the owning user. `null` for end-user (user-JWT) callers; populated for developer and server-to-server callers.","example":"Example Name","type":"string"},"value":{"description":"The string value stored under `key` for this user.","example":"dark","type":"string"}},"required":["created_at","key","updated_at","user","value"],"type":"object"},"KnowledgeSource":{"description":"A knowledge source that ingests content into the knowledge base. Sources connect to external systems (e.g. Gmail, GitHub) and continuously or on-demand index items for search.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","context_installation":"cin_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","id":"cso_0aBcDeFgHiJkLmNoPqRsTu","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_source":"cso_0aBcDeFgHiJkLmNoPqRsTu","payload":{"key":"value"},"sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","state":"active","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"gmail","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"ID of the agent that owns this source (`agt_...`). `null` if owned by a human user or team.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"context_installation":{"description":"ID of the context installation that provisioned this source (`cin_...`). `null` when the source was created directly rather than through an installation.","example":"cin_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When this knowledge source was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Knowledge source ID (`cso_...`).","example":"cso_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this source. Useful for storing caller-defined labels or references.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization this source belongs to (`org_...`). `null` if not scoped to an org.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_source":{"description":"ID of the parent knowledge source (`cso_...`) when this source was derived from another. `null` for top-level sources.","example":"cso_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"payload":{"description":"Type-specific configuration object. The keys depend on the source `type`; see the create endpoint for the expected shape per type.","example":{"key":"value"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this source is scoped to (`sbx_...`). `null` outside sandbox contexts.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"state":{"description":"Current lifecycle state of the source. One of `\"active\"` (ingestion running normally) or `\"paused\"` (ingestion suspended).","example":"active","type":"string"},"team":{"description":"ID of the team that owns this source (`tea_...`). `null` if owned by a user, agent, or org.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the chat thread this source is associated with (`thr_...`). `null` when not thread-scoped.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"type":{"description":"Source type identifier (e.g. `\"gmail\"`, `\"github_activity\"`). Determines the shape of `payload` and the ingestion behavior.","example":"gmail","type":"string"},"updated_at":{"description":"When this knowledge source was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this source (`usr_...`). `null` if owned by a team, agent, or org.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id","state","type"],"type":"object"},"KnowledgeSourceKind":{"description":"Describes a single knowledge source kind that can be created through the public API. Use the `type` value when creating a new knowledge source.","example":{"description":"An example description.","label":"Gmail","type":"gmail"},"properties":{"description":{"description":"Short description of what this source kind ingests and how it is used.","example":"An example description.","type":"string"},"label":{"description":"Human-readable display name for this source kind, suitable for showing in a UI.","example":"Gmail","type":"string"},"type":{"description":"Machine-readable type identifier for this source kind (e.g. `\"gmail\"`, `\"github_activity\"`). Pass this value as `type` when creating a knowledge source.","example":"gmail","type":"string"}},"required":["type"],"type":"object"},"KnowledgeSourceKindListResponse":{"description":"List response containing the knowledge source kinds available for creation via the API.","example":{"data":[{"description":"An example description.","label":"Gmail","type":"gmail"}]},"properties":{"data":{"description":"Array of knowledge source kind objects describing each creatable source type.","items":{"$ref":"#/components/schemas/KnowledgeSourceKind"},"type":"array"}},"required":["data"],"type":"object"},"LLMConfig":{"description":"LLM invocation settings for a routine or chain step. When present, overrides the agent-level model selection.","example":{"model":"claude-sonnet-4-5"},"properties":{"model":{"description":"Model identifier to use for this routine or step, e.g. `\"claude-sonnet-4-5\"`. When omitted, the agent's default model is used.","example":"claude-sonnet-4-5","type":"string"}},"type":"object"},"MediaVariant":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"$ref":"#/components/schemas/ImageSource","description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types."},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"Message":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","items":{"$ref":"#/components/schemas/Actor"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","items":{"$ref":"#/components/schemas/Attachment"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","items":{"$ref":"#/components/schemas/MessageReaction"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"MessageReaction":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"Notification":{"description":"An inbox notification delivered to a recipient user. Includes type-specific render data resolved at request time.","example":{"archived_at":"2024-01-01T00:00:00Z","created_at":"2024-01-01T00:00:00Z","id":"ntf_0aBcDeFgHiJkLmNoPqRsTu","read_at":"2024-01-01T00:00:00Z","rendered":{},"status":"unread","type":"app_info"},"properties":{"archived_at":{"description":"When the recipient archived this notification. `null` if the notification has not been archived.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"created_at":{"description":"When the notification was sent (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Notification ID (`ntf_...`).","example":"ntf_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"read_at":{"description":"When the recipient marked this notification read. `null` if the notification has not been read.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"rendered":{"description":"Type-specific render spec resolved at request time. All types include `title`, `kind`, and `actions`; custom types may add their own keys. Notifications whose type is no longer registered render with `kind: \"unknown\"`.","example":{},"type":"object"},"status":{"description":"Current read state of the notification. One of `\"unread\"`, `\"read\"`, or `\"archived\"`.","example":"unread","type":"string"},"type":{"description":"Notification type slug, e.g. `\"app_info\"` for a built-in type or `\"custom:deploy_complete\"` for a custom type.","example":"app_info","type":"string"}},"required":["created_at","id","rendered","status","type"],"type":"object"},"NotificationPreference":{"description":"A single per-channel notification preference for the authenticated viewer, scoped to a notification type and optional app.","example":{"app_id":"string","channel":"email","created_at":"2024-01-01T00:00:00Z","enabled":true,"id":"string","type":"app_info","updated_at":"2024-01-01T00:00:00Z"},"properties":{"app_id":{"description":"App this preference is scoped to (`app_...`). `null` indicates a system-level (no-app) slot that applies across all apps.","example":"string","type":"string"},"channel":{"description":"Delivery channel for this preference, e.g. `\"email\"`. The `in_app` channel is always active and never has a preference row.","example":"email","type":"string"},"created_at":{"description":"When this preference record was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"enabled":{"description":"Whether delivery over this channel is enabled for the given type-and-app combination. `false` suppresses delivery even when the notification is triggered.","example":true,"type":"boolean"},"id":{"description":"Preference record ID (`ntfp_...`).","example":"string","type":"string"},"type":{"description":"Notification type in wire-format. Built-in types use their atom name, e.g. `\"app_info\"` or `\"billing_alert\"`. Custom notification types use the form `\"custom:<lookup_key>\"`.","example":"app_info","type":"string"},"updated_at":{"description":"When this preference record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["channel","enabled","id","type"],"type":"object"},"NotificationPreferenceList":{"description":"The complete set of notification preferences belonging to the authenticated viewer.","example":{"data":[{"app_id":"string","channel":"email","created_at":"2024-01-01T00:00:00Z","enabled":true,"id":"string","type":"app_info","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of notification preference objects for the authenticated viewer. Each entry corresponds to a distinct type-and-channel combination.","items":{"$ref":"#/components/schemas/NotificationPreference"},"type":"array"}},"required":["data"],"type":"object"},"OAuthTokenResponse":{"description":"A successful OAuth 2.0 token response. Issued by the token endpoint after a completed authorization or device-flow grant.","example":{"access_token":"string","expires_in":3600,"refresh_token":"string","scope":"read write","token_type":"Bearer","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"access_token":{"description":"Bearer token used to authenticate API requests. Include this value in the `Authorization: Bearer <token>` header.","example":"string","type":"string","x-sdk":"access_token"},"expires_in":{"description":"Number of seconds until the access token expires.","example":3600,"type":"integer","x-sdk":"token_expiry"},"refresh_token":{"description":"Token that can be exchanged for a new access token once the current one expires. `null` if the grant type does not issue refresh tokens.","example":"string","type":"string","x-sdk":"refresh_token"},"scope":{"description":"Space-separated list of scopes granted to the access token. `null` if scope was not included in the grant request.","example":"read write","type":"string"},"token_type":{"description":"Token type. Always `\"Bearer\"`.","example":"Bearer","type":"string"},"user":{"$ref":"#/components/schemas/User","description":"The authenticated user associated with this token. `null` when the token is not tied to a specific user (e.g. client-credentials grants)."}},"required":["access_token","expires_in","token_type"],"type":"object"},"PaginatedReplies":{"description":"A paginated list of reply messages for a thread. The reply array is returned directly, not nested inside a `data` wrapper.","example":{"after_cursor":"string","before_cursor":"string","has_more":true,"replies":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"total_count":42},"properties":{"after_cursor":{"description":"Opaque cursor to pass as the pagination cursor to retrieve the page of replies that follow this one. `null` when no further pages exist.","example":"string","type":"string"},"before_cursor":{"description":"Opaque cursor to pass as the pagination cursor to retrieve the page of replies that precede this one. `null` when no earlier pages exist.","example":"string","type":"string"},"has_more":{"description":"Whether additional reply pages exist beyond the current page.","example":true,"type":"boolean"},"replies":{"description":"Array of reply message objects for the current page.","items":{"$ref":"#/components/schemas/Message"},"type":"array"},"total_count":{"description":"Total number of replies in the thread across all pages.","example":42,"type":"integer"}},"required":["replies"],"type":"object"},"PresetConfig":{"description":"Configuration for a preset routine handler. Controls the agent's behavior, session persistence, and model selection for a given routine or chain step.","example":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"properties":{"instructions":{"description":"Custom task or behavior instructions for the preset (max 10,000 chars).","example":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","type":"string"},"llm":{"$ref":"#/components/schemas/LLMConfig","description":"LLM invocation settings (e.g. a `model` override for this routine/step)."},"session_mode":{"description":"Session mode: `stateless` (default, new session per trigger) or `session` (find-or-create a persistent session scoped by `session_scope`).","example":"stateless","type":"string"},"session_scope":{"description":"When `session_mode` is `session`, controls session scoping: `per_user` (default), `per_key`, `per_org`, or `global`.","example":"per_user","type":"string"},"structured_message_template_ids":{"description":"IDs of structured message templates that constrain the agent's responses to predefined structured formats.","example":["string"],"items":{"type":"string"},"type":"array"}},"type":"object"},"RoutinePreset":{"description":"A named preset that defines the execution model and constraints for a routine. Presets are shared definitions; individual routines reference a preset by name.","example":{"applicable_events":["string"],"chainable":true,"description":"An example description.","label":"string","name":"Example Name","sessionable":true,"unique":true},"properties":{"applicable_events":{"description":"Event types that routines using this preset may be triggered by. `[\"*\"]` means the preset accepts any event type. Routines assigned to this preset will be rejected at creation time if their trigger event is not in this list.","example":["string"],"items":{"type":"string"},"type":"array"},"chainable":{"description":"Whether routines using this preset can be composed as a step inside a chain routine. Presets with sessionable or asynchronous execution models are not chainable.","example":true,"type":"boolean"},"description":{"description":"Human-readable description of what the preset does and when to use it.","example":"An example description.","type":"string"},"label":{"description":"Human-readable display name for the preset, suitable for use in UIs.","example":"string","type":"string"},"name":{"description":"Stable machine identifier for the preset, e.g. `\"do_task\"`. Used when assigning a preset to a routine.","example":"Example Name","type":"string"},"sessionable":{"description":"Whether routines using this preset maintain a persistent conversation session across invocations. Sessionable presets do not expose instruction or session-mode configuration on individual routines.","example":true,"type":"boolean"},"unique":{"description":"Whether at most one routine with this preset may exist per agent. Attempting to create a second routine with a unique preset on the same agent will be rejected.","example":true,"type":"boolean"}},"required":["applicable_events","chainable","description","label","name","sessionable","unique"],"type":"object"},"SlackChannelBinding":{"description":"A binding that connects a Slack channel to an ArchAstro team and one or more agents, enabling those agents to receive and respond to messages in that channel.","example":{"agents":["string"],"channel":"C01234ABCDE","customer_label":"string","id":"string","integration":"string","is_ext_shared_cached":true,"team":"string"},"properties":{"agents":{"description":"IDs of the agents attached to this binding. Empty array when no agents are assigned.","example":["string"],"items":{"type":"string"},"type":"array"},"channel":{"description":"Slack channel ID (e.g. `C01234ABCDE`) that this binding targets.","example":"C01234ABCDE","type":"string"},"customer_label":{"description":"Human-readable label identifying the customer, derived from the binding's embedded config. `null` when not set.","example":"string","type":"string"},"id":{"description":"Unique identifier for this Slack channel binding.","example":"string","type":"string"},"integration":{"description":"ID of the Slack integration that owns this binding.","example":"string","type":"string"},"is_ext_shared_cached":{"description":"Cached value of Slack's `is_ext_shared` flag for this channel. May be stale relative to Slack's current state.","example":true,"type":"boolean"},"team":{"description":"ID of the ArchAstro team this channel is bound to.","example":"string","type":"string"}},"required":["id"],"type":"object"},"SlackChannelBindingListResponse":{"description":"Paginated list of Slack channel bindings for the requested integration or team. Use the `page` and `per_page` fields to navigate pages of results.","example":{"data":[{"agents":["string"],"channel":"C01234ABCDE","customer_label":"string","id":"string","integration":"string","is_ext_shared_cached":true,"team":"string"}],"page":1,"per_page":20,"total_count":1,"total_pages":1},"properties":{"data":{"description":"Array of Slack channel binding objects for the current page.","items":{"$ref":"#/components/schemas/SlackChannelBinding"},"type":"array"},"page":{"description":"Current page number (1-indexed).","example":1,"type":"integer"},"per_page":{"description":"Maximum number of bindings returned per page.","example":20,"type":"integer"},"total_count":{"description":"Total number of Slack channel bindings matching the query across all pages.","example":1,"type":"integer"},"total_pages":{"description":"Total number of pages available at the current `per_page` size.","example":1,"type":"integer"}},"required":["data","page","per_page","total_count","total_pages"],"type":"object"},"SolutionCategoryListResponse":{"description":"Paginated list of solution category summaries. Use `page` and `page_size` to navigate pages of results.","example":{"data":[{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"productivity","kind":"SolutionCategory","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","owners":["string"],"parent_key":"string","sort_order":1,"updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":42,"total_pages":3},"properties":{"data":{"description":"Array of solution category summary objects for the current page.","items":{"$ref":"#/components/schemas/SolutionCategorySummary"},"type":"array"},"has_next":{"description":"`true` when a subsequent page of results exists.","example":true,"type":"boolean"},"has_prev":{"description":"`true` when a previous page of results exists.","example":true,"type":"boolean"},"page":{"description":"Current page number (1-indexed).","example":1,"type":"integer"},"page_size":{"description":"Maximum number of entries returned per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of distinct solution categories across all pages.","example":42,"type":"integer"},"total_pages":{"description":"Total number of pages available at the current `page_size`.","example":3,"type":"integer"}},"required":["data","has_next","has_prev","page","page_size","total_entries","total_pages"],"type":"object"},"SolutionCategorySummary":{"description":"A solution category that organizes solutions in the catalog, identified by a stable key and optionally nested under a parent category.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"productivity","kind":"SolutionCategory","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","owners":["string"],"parent_key":"string","sort_order":1,"updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this category was first created (ISO 8601). `null` for system-built-in categories.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short prose description of what solutions in this category do. `null` when not configured.","example":"An example description.","type":"string"},"id":{"description":"Solution category config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Stable, human-readable key for this category, referenced by solutions via `category_keys`.","example":"productivity","type":"string"},"kind":{"description":"Resource type identifier. Always `\"SolutionCategory\"`.","example":"SolutionCategory","type":"string"},"lookup_key":{"description":"Lookup key of the underlying config record. `null` when not set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this category by the publisher.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name shown to users. `null` when not configured.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this category. `null` for system-scoped categories.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"owners":{"description":"Scopes under which this category is visible. Possible values are `\"system\"` (available to all apps) and `\"org\"` (scoped to the viewer's organization).","example":["string"],"items":{"type":"string"},"type":"array"},"parent_key":{"description":"Key of the parent `SolutionCategory`, enabling a hierarchy. `null` for top-level categories.","example":"string","type":"string"},"sort_order":{"description":"Numeric hint for ordering categories in a list. Lower values sort first. `null` when not configured.","example":1,"type":"integer"},"updated_at":{"description":"When this category was last modified (ISO 8601). `null` for system-built-in categories.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual path of the underlying config record. `null` when not set.","example":"string","type":"string"}},"required":["id","key","kind","owners"],"type":"object"},"SolutionDependentAgent":{"description":"A brief representation of an agent that references at least one config bundled by a Solution, included in the dependents preview response.","example":{"id":"string","name":"Example Name"},"properties":{"id":{"description":"Agent ID (`agi_...`).","example":"string","type":"string"},"name":{"description":"Human-readable display name of the agent. `null` when no name has been set.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"SolutionDependentsResponse":{"description":"A preview of the agents and configs that would be affected by deleting a Solution, returned before any deletion occurs so the caller can display a confirmation warning.","example":{"dependent_agent_count":1,"dependent_agents":[{"id":"string","name":"Example Name"}],"preserved_config_count":1},"properties":{"dependent_agent_count":{"description":"Total number of distinct agents that reference at least one config bundled by this Solution. Use this count in the confirmation message; `dependent_agents` may be a shorter sample.","example":1,"type":"integer"},"dependent_agents":{"description":"A representative sample of the dependent agents, suitable for displaying in a warning list. May contain fewer entries than `dependent_agent_count` when there are many dependents.","items":{"$ref":"#/components/schemas/SolutionDependentAgent"},"type":"array"},"preserved_config_count":{"description":"Number of bundled configs that would be detached and preserved rather than deleted, because at least one live agent still references them.","example":1,"type":"integer"}},"required":["dependent_agent_count","dependent_agents","preserved_config_count"],"type":"object"},"SolutionDiffEntry":{"description":"A single config entry in a solution upgrade diff, describing what action will be taken on a specific config key.","example":{"action":"update","content_changed":true,"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"string","kind":"Automation","lookup_key":"string","mime_type_changed":true,"referenced_by":[{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Automation","lookup_key":"string","reason":"string"}],"relative_path_changed":true,"role":"primary","virtual_path":"/path/to/resource"},"properties":{"action":{"description":"Planned action for this entry. One of `\"add\"` (new config), `\"update\"` (existing config changes), `\"noop\"` (no change needed), `\"orphan\"` (config no longer in the solution), or `\"delete\"` (config to be removed).","example":"update","type":"string"},"content_changed":{"description":"`true` if the config content differs between the existing and incoming solution versions.","example":true,"type":"boolean"},"id":{"description":"Config ID (`cfg_...`) if this entry corresponds to an existing config record. `null` for new additions.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Stable string key identifying this config entry within the solution.","example":"string","type":"string"},"kind":{"description":"Config object type, e.g. `\"Automation\"` or `\"Template\"`. `null` if not yet known.","example":"Automation","type":"string"},"lookup_key":{"description":"Human-readable stable identifier for this config. `null` if not assigned.","example":"string","type":"string"},"mime_type_changed":{"description":"`true` if the MIME type of the config changed between versions.","example":true,"type":"boolean"},"referenced_by":{"description":"List of other configs that reference this entry. Populated for orphaned configs that cannot be safely removed. Empty array when there are no references.","items":{"$ref":"#/components/schemas/SolutionDiffReference"},"type":"array"},"relative_path_changed":{"description":"`true` if the relative path of the config within the solution changed between versions.","example":true,"type":"boolean"},"role":{"description":"Role of this config within the solution. Indicates whether it is a primary config or a dependency.","example":"primary","type":"string"},"virtual_path":{"description":"Hierarchical path of this config in the config tree. `null` if not assigned.","example":"/path/to/resource","type":"string"}},"required":["action","content_changed","key","mime_type_changed","relative_path_changed","role"],"type":"object"},"SolutionDiffReference":{"description":"A reference from another config to an orphaned entry in a solution upgrade diff, explaining why the orphan cannot be safely removed.","example":{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Automation","lookup_key":"string","reason":"string"},"properties":{"id":{"description":"ID of the referencing config (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Object type of the referencing config, e.g. `\"Automation\"` or `\"Template\"`.","example":"Automation","type":"string"},"lookup_key":{"description":"Human-readable stable identifier of the referencing config. `null` if not assigned.","example":"string","type":"string"},"reason":{"description":"Explanation of how the referencing config depends on the orphaned entry.","example":"string","type":"string"}},"required":["id","kind","reason"],"type":"object"},"SolutionDiffSummary":{"description":"Aggregate counts of each action type across all entries in a solution upgrade diff.","example":{"adds":1,"deletes":1,"noops":1,"orphans":1,"referenced_orphans":1,"updates":1},"properties":{"adds":{"description":"Number of config entries that will be newly created by this upgrade.","example":1,"type":"integer"},"deletes":{"description":"Number of config entries that will be deleted as part of the upgrade.","example":1,"type":"integer"},"noops":{"description":"Number of config entries that are already up to date and require no changes.","example":1,"type":"integer"},"orphans":{"description":"Number of config entries present in the existing solution that are absent from the incoming version and have no external references blocking removal.","example":1,"type":"integer"},"referenced_orphans":{"description":"Number of orphaned config entries that cannot be removed because other configs still reference them.","example":1,"type":"integer"},"updates":{"description":"Number of config entries that exist and will be updated with new content.","example":1,"type":"integer"}},"required":["adds","deletes","noops","orphans","referenced_orphans","updates"],"type":"object"},"SolutionImportResponse":{"description":"The result of importing a Solution bundle into the library, including the Solution config record, a structured import result, and the list of all configs persisted during the transaction.","example":{"created_at":"2024-01-01T00:00:00Z","id":"id_0aBcDeFgHiJkLmNoPqRsTu","import_result":{"code":"string","dry_run":true,"existing_solution_version":"1.0.0","incoming_solution_version":"1.0.0","message":"string","status":"ready","upgrade_required":true},"installed_configs":[{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"my-skill","kind":"Skill","lookup_key":"my-skill"}],"kind":"Solution","lookup_key":"string","solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When the Solution config record was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"import_result":{"$ref":"#/components/schemas/SolutionImportResult","description":"Structured outcome of the import, including status, conflict details, and version information."},"installed_configs":{"description":"Deprecated legacy field. One entry per persisted config in the import (including the Solution itself), defaulting to an empty array. Callers should prefer `solution` plus follow-up APIs instead. `key` echoes the caller-supplied input identifier (original lookup_key for top-level configs; `<skill_lookup_key>:<relative_path>` for skill / solution-file children). Order is stable: sorted by `key`.","items":{"$ref":"#/components/schemas/InstalledConfigEntry"},"type":"array"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"lookup_key":{"description":"The `lookup_key` stored on the Solution config after the import's suffix normalization. `null` when the Solution was not given a lookup key.","example":"string","type":"string"},"solution":{"$ref":"#/components/schemas/SolutionSummary","description":"Full summary of the imported Solution, in the same shape as the individual Solution retrieval endpoint."},"updated_at":{"description":"When the Solution config record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"The `virtual_path` stored on the Solution config, used as the stable dedupe key across owner scopes. `null` when no virtual path was assigned.","example":"string","type":"string"}},"required":["id","import_result","kind","solution"],"type":"object"},"SolutionImportResult":{"description":"The machine-readable outcome of a Solution import attempt, indicating whether the import succeeded or requires an upgrade flow to resolve a version conflict.","example":{"code":"string","dry_run":true,"existing_solution_version":"1.0.0","incoming_solution_version":"1.0.0","message":"string","status":"ready","upgrade_required":true},"properties":{"code":{"description":"Machine-readable conflict code present when `status` is `\"conflict\"`, identifying the specific conflict reason. `null` when `status` is `\"ready\"`.","example":"string","type":"string"},"dry_run":{"description":"Whether this result was produced by a dry-run check. `true` when the import was validated without persisting any changes.","example":true,"type":"boolean"},"existing_solution_version":{"description":"Semver string of the Solution version already present in the library. `null` when no prior version exists.","example":"1.0.0","type":"string"},"incoming_solution_version":{"description":"Semver string of the Solution version in the bundle being imported. `null` when the bundle does not declare a version.","example":"1.0.0","type":"string"},"message":{"description":"Human-readable description of the import status or conflict reason, suitable for display in a confirmation dialog. `null` when no detail is available.","example":"string","type":"string"},"status":{"description":"Outcome of the import check. `\"ready\"` means the import can proceed as a normal create or update. `\"conflict\"` means a version conflict was detected and the upgrade flow must be used instead.","example":"ready","type":"string"},"upgrade_required":{"description":"Whether the caller must invoke the dedicated upgrade flow to complete the import. Mirrors `status == \"conflict\"` as a convenience boolean.","example":true,"type":"boolean"}},"required":["dry_run","status","upgrade_required"],"type":"object"},"SolutionInstallResponse":{"description":"The runtime resource provisioned by installing a Solution, along with a reference back to the source Solution config.","example":{"id":"string","kind":"Agent","lookup_key":"string","solution":"id_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"id":{"description":"Public ID of the provisioned resource. The prefix reflects the resource kind: `agi_...` for Agent, `aut_...` for Automation, `art_...` for AgentRoutine, `att_...` for AgentTool, `ask_...` for AgentSkill, `cmp_...` for AgentComputer.","example":"string","type":"string"},"kind":{"description":"Type of the provisioned resource. One of `\"Agent\"`, `\"Automation\"`, `\"AgentRoutine\"`, `\"AgentTool\"`, `\"AgentSkill\"`, or `\"AgentComputer\"`.","example":"Agent","type":"string"},"lookup_key":{"description":"The `lookup_key` stamped on the provisioned resource. `null` for `AgentSkill`, which is a join record and does not carry a lookup key.","example":"string","type":"string"},"solution":{"description":"Solution config ID (`cfg_...`) that was used as the source for this install.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id","kind","solution"],"type":"object"},"SolutionListResponse":{"description":"A paginated collection of Solution summaries, with page metadata for navigating the result set.","example":{"data":[{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":42,"total_pages":3},"properties":{"data":{"description":"Array of Solution summary objects for the current page, in the order returned by the query.","items":{"$ref":"#/components/schemas/SolutionSummary"},"type":"array"},"has_next":{"description":"`true` when a subsequent page exists; `false` when this is the last page.","example":true,"type":"boolean"},"has_prev":{"description":"`true` when a preceding page exists; `false` when this is the first page.","example":true,"type":"boolean"},"page":{"description":"1-based index of the current page.","example":1,"type":"integer"},"page_size":{"description":"Maximum number of results included per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of Solutions matching the query after deduplication by `solution_id` across owner scopes.","example":42,"type":"integer"},"total_pages":{"description":"Total number of pages available at the current `page_size`.","example":3,"type":"integer"}},"required":["data","has_next","has_prev","page","page_size","total_entries","total_pages"],"type":"object"},"SolutionSummary":{"description":"A catalog entry for an imported Solution, including its display metadata, bundled templates, owner scopes, and any available upgrade information.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"$ref":"#/components/schemas/ImageSource","description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo."},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","items":{"$ref":"#/components/schemas/SolutionTemplateSummary"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"SolutionTagListResponse":{"description":"Paginated list of solution tag summaries returned by the list solution tags endpoint.","example":{"data":[{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"featured","kind":"SolutionTag","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","owners":["string"],"sort_order":1,"updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":42,"total_pages":3},"properties":{"data":{"description":"Array of solution tag objects for the current page.","items":{"$ref":"#/components/schemas/SolutionTagSummary"},"type":"array"},"has_next":{"description":"`true` if a subsequent page exists; `false` when this is the last page.","example":true,"type":"boolean"},"has_prev":{"description":"`true` if a preceding page exists; `false` when this is the first page.","example":true,"type":"boolean"},"page":{"description":"Current page number (1-indexed).","example":1,"type":"integer"},"page_size":{"description":"Maximum number of results returned per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of distinct solution tags across all pages, after deduplication by key.","example":42,"type":"integer"},"total_pages":{"description":"Total number of pages available at the current `page_size`.","example":3,"type":"integer"}},"required":["data","has_next","has_prev","page","page_size","total_entries","total_pages"],"type":"object"},"SolutionTagSummary":{"description":"A single solution tag definition, representing a named classification label that can be applied to solutions.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"featured","kind":"SolutionTag","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","owners":["string"],"sort_order":1,"updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When the solution tag was first created (ISO 8601). `null` if unavailable.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short prose explanation of what the tag represents. `null` if not provided.","example":"An example description.","type":"string"},"id":{"description":"Solution tag config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Stable string key for this tag, referenced by `Solution.tag_keys` to associate solutions with this tag.","example":"featured","type":"string"},"kind":{"description":"Object type discriminator. Always `\"SolutionTag\"`.","example":"SolutionTag","type":"string"},"lookup_key":{"description":"Human-readable stable identifier for this tag config, used for lookups and imports. `null` if not assigned.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this tag. Empty object `{}` when no metadata is present.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the tag. `null` if not yet set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization that owns this tag (`org_...`). `null` for system-scoped tags.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"owners":{"description":"Scopes under which this tag is visible to the caller. One or both of `\"system\"` (platform-level tag available to all orgs) and `\"org\"` (tag scoped to the viewer's org).","example":["string"],"items":{"type":"string"},"type":"array"},"sort_order":{"description":"Optional integer hint for ordering tags in UI lists. Lower values sort first. `null` if not set.","example":1,"type":"integer"},"updated_at":{"description":"When the solution tag was last modified (ISO 8601). `null` if unavailable.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Hierarchical path used to organize this tag in the config tree. `null` if not assigned.","example":"string","type":"string"}},"required":["id","key","kind","owners"],"type":"object"},"SolutionTemplateSummary":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"SolutionUpgradeResponse":{"description":"Response returned by the solution upgrade endpoint, containing the solution record, the full upgrade diff, and the resulting installed configs.","example":{"created_at":"2024-01-01T00:00:00Z","id":"id_0aBcDeFgHiJkLmNoPqRsTu","installed_configs":[{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"my-skill","kind":"Skill","lookup_key":"my-skill"}],"kind":"Solution","lookup_key":"string","solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"updated_at":"2024-01-01T00:00:00Z","upgrade_result":{"changes":[{"action":"update","content_changed":true,"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"string","kind":"Automation","lookup_key":"string","mime_type_changed":true,"referenced_by":[{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Automation","lookup_key":"string","reason":"string"}],"relative_path_changed":true,"role":"primary","virtual_path":"/path/to/resource"}],"code":"review_required","dry_run":true,"existing_solution_version":"1.0.0","incoming_solution_version":"1.0.0","message":"string","review_fingerprint":"string","status":"ready","summary":{"adds":1,"deletes":1,"noops":1,"orphans":1,"referenced_orphans":1,"updates":1},"version_change":"upgrade"},"virtual_path":"/path/to/resource"},"properties":{"created_at":{"description":"When the solution config record was first created (ISO 8601). `null` if unavailable.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Config ID of the solution record (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"installed_configs":{"description":"List of config entries that were installed or updated as part of this upgrade. Empty when `dry_run` is `true` or when no configs changed.","items":{"$ref":"#/components/schemas/InstalledConfigEntry"},"type":"array"},"kind":{"description":"Object type discriminator. Always `\"Solution\"`.","example":"Solution","type":"string"},"lookup_key":{"description":"Human-readable stable identifier for this solution config. `null` if not assigned.","example":"string","type":"string"},"solution":{"$ref":"#/components/schemas/SolutionSummary","description":"Summary of the solution being upgraded, including its name, manifest metadata, and tag keys."},"updated_at":{"description":"When the solution config record was last modified (ISO 8601). `null` if unavailable.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_result":{"$ref":"#/components/schemas/SolutionUpgradeResult","description":"Detailed result of the upgrade operation, including the computed diff and any conflict information."},"virtual_path":{"description":"Hierarchical path of the solution in the config tree. `null` if not assigned.","example":"/path/to/resource","type":"string"}},"required":["id","kind","solution","upgrade_result"],"type":"object"},"SolutionUpgradeResult":{"description":"The outcome of a solution upgrade operation, including the computed diff and conflict status.","example":{"changes":[{"action":"update","content_changed":true,"id":"id_0aBcDeFgHiJkLmNoPqRsTu","key":"string","kind":"Automation","lookup_key":"string","mime_type_changed":true,"referenced_by":[{"id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Automation","lookup_key":"string","reason":"string"}],"relative_path_changed":true,"role":"primary","virtual_path":"/path/to/resource"}],"code":"review_required","dry_run":true,"existing_solution_version":"1.0.0","incoming_solution_version":"1.0.0","message":"string","review_fingerprint":"string","status":"ready","summary":{"adds":1,"deletes":1,"noops":1,"orphans":1,"referenced_orphans":1,"updates":1},"version_change":"upgrade"},"properties":{"changes":{"description":"Ordered list of individual config change entries representing every add, update, noop, orphan, and delete in the diff.","items":{"$ref":"#/components/schemas/SolutionDiffEntry"},"type":"array"},"code":{"description":"Machine-readable conflict code when `status` is `\"conflict\"`, e.g. `\"review_required\"`. `null` when there is no conflict.","example":"review_required","type":"string"},"dry_run":{"description":"`true` when the upgrade was computed without writing any changes; `false` when changes were committed.","example":true,"type":"boolean"},"existing_solution_version":{"description":"Version string of the currently installed solution, as declared in its manifest. `null` if no prior version is installed.","example":"1.0.0","type":"string"},"incoming_solution_version":{"description":"Version string of the incoming solution to be installed, as declared in its manifest. `null` if the incoming manifest omits a version.","example":"1.0.0","type":"string"},"message":{"description":"Human-readable description of the conflict or error. `null` when there is no conflict.","example":"string","type":"string"},"review_fingerprint":{"description":"Opaque fingerprint that uniquely identifies this diff. Pass this value as `review_fingerprint` on a subsequent non-dry-run upgrade call to confirm you have reviewed the diff. `null` if not applicable.","example":"string","type":"string"},"status":{"description":"Overall result of the upgrade. `\"ready\"` means the upgrade can proceed; `\"conflict\"` means a blocking issue was detected and the upgrade was not applied.","example":"ready","type":"string"},"summary":{"$ref":"#/components/schemas/SolutionDiffSummary","description":"Aggregate counts of each action type across all diff entries."},"version_change":{"description":"Describes the nature of the version transition. One of `\"upgrade\"`, `\"downgrade\"`, `\"same\"`, or `\"unknown\"`.","example":"upgrade","type":"string"}},"required":["changes","dry_run","status","summary","version_change"],"type":"object"},"StorageFile":{"description":"A file stored in the platform's object storage, with metadata and a signed URL for downloading its contents.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","filename":"document.pdf","id":"fil_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","size":1024,"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com"},"properties":{"content_type":{"description":"MIME type of the file, e.g. `\"image/png\"` or `\"application/pdf\"`.","example":"application/json","type":"string"},"created_at":{"description":"When the file was uploaded (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"filename":{"description":"Original filename as provided at upload time.","example":"document.pdf","type":"string"},"id":{"description":"File ID (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"$ref":"#/components/schemas/ImageSource","description":"Image display metadata. Present only when `content_type` is an image type; `null` otherwise."},"org":{"description":"ID of the organization that owns this file (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"ID of the sandbox this file is scoped to (`sbx_...`). `null` for files not associated with a sandbox.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"size":{"description":"Size of the file in bytes.","example":1024,"type":"integer"},"updated_at":{"description":"When the file record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Short-lived signed URL for downloading the file. `null` if a URL could not be generated.","example":"https://example.com","type":"string"}},"required":["id"],"type":"object"},"Team":{"description":"A team within an organization, used to group users and agents and scope resources like configs, agents, and tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"properties":{"acl":{"$ref":"#/components/schemas/Acl","description":"Access control list governing visibility and join permissions for this team. `null` when no ACL restrictions are applied and the team inherits default access rules."},"app":{"description":"ID of the developer application this team belongs to (`dap_...`). `null` if the team is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"badges":{"description":"Aggregated badge counts for the team, keyed by category. `null` when badge data is not loaded.","example":{},"type":"object"},"created_at":{"description":"When this team was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Human-readable description of the team's purpose. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Team ID (`tem_...`).","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"membership_status":{"description":"The authenticated viewer's role on this team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`. `null` if the viewer is not a member.","example":"member","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this team. Returns an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the team.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this team belongs to (`org_...`). `null` if the team is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"ID of the developer sandbox this team is scoped to (`dsb_...`). `null` outside sandbox contexts.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"slug":{"description":"URL-safe slug for the team, derived from the team name. `null` if not set.","example":"example-slug","type":"string"},"updated_at":{"description":"When this team was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"TeamInvite":{"description":"A team invite containing a short alphanumeric code that other users can present to join the team.","example":{"code":"XKCD42"},"properties":{"code":{"description":"Short alphanumeric join code. Pass this value as `join_code` to the join-with-code endpoint to add a user to the team.","example":"XKCD42","type":"string"}},"required":["code"],"type":"object"},"TeamMembership":{"description":"A record representing a user's or agent's membership in a team, including their resolved identity details and role.","example":{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"created_at":"2024-01-01T00:00:00Z","id":"tmb_0aBcDeFgHiJkLmNoPqRsTu","joined_at":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"role":"member","team":{},"type":"user","updated_at":"2024-01-01T00:00:00Z","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"agent":{"$ref":"#/components/schemas/Agent","description":"The agent associated with this membership, as an expanded agent object. `null` when the member is a user, the type is unknown, or the association is not preloaded."},"created_at":{"description":"When this membership record was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Team membership ID (`tmb_...`).","example":"tmb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"joined_at":{"description":"When the principal joined the team (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this membership record. `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the member, derived from the associated user or agent. `null` if the principal is unknown.","example":"Example Name","type":"string"},"profile_picture":{"$ref":"#/components/schemas/ImageSource","description":"Profile picture of the member, derived from the associated user or agent. `null` if not set or principal is unknown."},"role":{"description":"The member's role within the team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`.","example":"member","type":"string"},"team":{"description":"The team this membership belongs to, as an expanded team object. `null` when the team association is not preloaded.","example":{},"type":"object"},"type":{"description":"Resolved principal type. One of `\"user\"`, `\"agent\"`, or `\"unknown\"` when the principal cannot be determined.","example":"user","type":"string"},"updated_at":{"description":"When this membership record was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"$ref":"#/components/schemas/User","description":"The user associated with this membership, as an expanded user object. `null` when the member is an agent, the type is unknown, or the association is not preloaded."}},"required":["id"],"type":"object"},"TeamMembershipListResponse":{"description":"A paginated list of team memberships returned by the list team memberships endpoint.","example":{"data":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"created_at":"2024-01-01T00:00:00Z","id":"tmb_0aBcDeFgHiJkLmNoPqRsTu","joined_at":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"role":"member","team":{},"type":"user","updated_at":"2024-01-01T00:00:00Z","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":1,"total_pages":1},"properties":{"data":{"description":"Array of team membership objects for the current page.","items":{"$ref":"#/components/schemas/TeamMembership"},"type":"array"},"has_next":{"description":"`true` if a subsequent page exists; `false` when this is the last page.","example":true,"type":"boolean"},"has_prev":{"description":"`true` if a previous page exists; `false` when this is the first page.","example":true,"type":"boolean"},"page":{"description":"Current page number, starting at `1`.","example":1,"type":"integer"},"page_size":{"description":"Maximum number of results returned per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of team memberships matching the applied filters across all pages.","example":1,"type":"integer"},"total_pages":{"description":"Total number of pages given the current `page_size`.","example":1,"type":"integer"}},"required":["data"],"type":"object"},"Thread":{"description":"A chat thread, representing a conversation channel that can be owned by a user, team, or agent and may contain messages, participants, and AI agent activity.","example":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent_user":{"description":"ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the thread was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"creator":{"$ref":"#/components/schemas/User","description":"Expanded user object for the user who created this thread. Populated only when the association is loaded."},"description":{"description":"Optional description or purpose statement for the thread. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Thread ID (`thr_...`).","example":"string","type":"string"},"is_channel":{"description":"Whether this thread operates as a channel — a multi-member broadcast-style conversation.","example":true,"type":"boolean"},"is_default":{"description":"Whether this is the default thread for its owner. Each user or team has at most one default thread.","example":true,"type":"boolean"},"is_transient":{"description":"Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.","example":true,"type":"boolean"},"is_unlisted":{"description":"Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.","example":true,"type":"boolean"},"key":{"description":"Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.","example":"string","type":"string"},"last_activity":{"description":"When the last message or activity occurred in this thread. Present only when activity enrichment is requested.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"muted":{"description":"Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.","example":true,"type":"boolean"},"org":{"description":"ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_message":{"$ref":"#/components/schemas/Message","description":"The message that spawned this thread as a sub-thread. `null` for top-level threads."},"participant":{"description":"Array of participant user IDs (`usr_...`) who are members of this thread.","example":["string"],"items":{"type":"string"},"type":"array"},"participants":{"description":"Expanded participant user objects for each member of this thread. Populated only when the association is loaded.","items":{"$ref":"#/components/schemas/User"},"type":"array"},"participating_actor":{"description":"Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.","example":["string"],"items":{"type":"string"},"type":"array"},"participating_agents":{"description":"Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.","items":{"$ref":"#/components/schemas/Agent"},"type":"array"},"role":{"description":"The authenticated user's membership role in this thread, e.g. `\"owner\"`, `\"member\"`, or `\"viewer\"`. `null` if the user is not a member.","example":"member","type":"string"},"sandbox":{"description":"ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.","example":"string","type":"string"},"settings":{"$ref":"#/components/schemas/ThreadSettings","description":"Per-thread configuration settings controlling AI agent behavior for this thread."},"slug":{"description":"URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.","example":"example-slug","type":"string"},"sub_threads":{"description":"Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.","example":[{}],"items":{"type":"object"},"type":"array"},"team":{"description":"ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable name of the thread. `null` if no title has been set.","example":"Example Title","type":"string"},"ttl":{"description":"Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.","example":3600,"type":"integer"},"unread_count":{"description":"Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.","example":5,"type":"integer"},"updated_at":{"description":"When the thread was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"ThreadMember":{"description":"A user's membership record in a thread, capturing their role and full user profile.","example":{"membership_type":"member","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"membership_type":{"description":"Role of the member within the thread. One of `\"owner\"` (the user who created or was granted ownership) or `\"member\"` (a regular participant).","example":"member","type":"string"},"thread":{"description":"ID of the thread this membership belongs to (`thr_...`).","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"user":{"$ref":"#/components/schemas/User","description":"Full user object for the member (`usr_...`). Present when the association is preloaded; `null` otherwise."}},"type":"object"},"ThreadReadStatus":{"description":"The read status of a thread for a specific user, indicating how far they have read and how many messages remain unread.","example":{"last_read_message":"string","thread":"string","unread_count":1},"properties":{"last_read_message":{"description":"Message ID (`msg_...`) of the last message the user has read in this thread. `null` if the user has never read any message in the thread.","example":"string","type":"string"},"thread":{"description":"Thread ID (`thr_...`) that this read status belongs to.","example":"string","type":"string"},"unread_count":{"description":"Number of messages in the thread that the user has not yet read.","example":1,"type":"integer"}},"required":["thread","unread_count"],"type":"object"},"ThreadSettings":{"description":"Configuration settings for a thread that control AI agent behavior and other thread-level preferences.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"UpgradeTemplateSummary":{"description":"Compact summary of an AgentTemplate config referenced by an agent upgrade or source-solution response.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"},"User":{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"UserInvite":{"description":"A shareable invite created by a user, optionally scoped to a thread. Recipients can use the invite key to join or start a conversation.","example":{"created_at":"2024-01-01T00:00:00Z","id":"uin_0aBcDeFgHiJkLmNoPqRsTu","key":"string","metadata":{"key":"value"},"thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","user":{"id":"usr_0aBcDeFgHiJkLmNoPqRsTu","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}},"properties":{"created_at":{"description":"When this invite was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Invite ID (`uin_...`).","example":"uin_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"Secret bearer token used to accept this invite. Treat this value like a password — do not log or expose it publicly.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the invite at creation time. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"thread":{"description":"ID of the thread this invite is scoped to (`thr_...`). `null` if the invite is not bound to a thread.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"user":{"$ref":"#/components/schemas/InviteCreator","description":"The user who created this invite."}},"required":["id"],"type":"object"},"ValidationResult":{"description":"The result of a configuration validation check, indicating whether the config is valid and listing any errors or warnings.","example":{"errors":["Field 'name' is required"],"valid":true,"warnings":["string"]},"properties":{"errors":{"description":"List of human-readable error messages describing why validation failed. Empty or absent when `valid` is `true`.","example":["Field 'name' is required"],"items":{"type":"string"},"type":"array"},"valid":{"description":"`true` if the configuration passed all validation checks, `false` if one or more errors were found.","example":true,"type":"boolean"},"warnings":{"description":"List of human-readable warning messages emitted during validation. Warnings do not cause `valid` to be `false` but indicate potentially problematic configuration.","example":["string"],"items":{"type":"string"},"type":"array"}},"required":["valid"],"type":"object"},"WorkerStatus":{"description":"Execution state of the background worker processing a routine run. Reflects the current job status and retry progress.","example":{"attempt":1,"max_attempts":3,"status":"executing"},"properties":{"attempt":{"description":"Number of times the worker has been attempted so far. `0` means the job has been enqueued but not yet started.","example":1,"type":"integer"},"max_attempts":{"description":"Maximum number of attempts the worker is allowed before the job is marked `\"discarded\"`.","example":3,"type":"integer"},"status":{"description":"Current execution state of the worker. One of `\"queued\"`, `\"executing\"`, `\"retrying\"`, `\"completed\"`, `\"discarded\"`, or `\"cancelled\"`.","example":"executing","type":"string"}},"required":["attempt","max_attempts","status"],"type":"object"},"WorkingMemoryEntry":{"description":"A key-value memory record stored for an agent, optionally scoped to a user. Memory entries persist across invocations and may carry an expiration time.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","expires_at":"2024-01-01T00:00:00Z","id":"amm_0aBcDeFgHiJkLmNoPqRsTu","key":"user_preference","updated_at":"2024-01-01T00:00:00Z","value":"string"},"properties":{"agent":{"description":"ID of the agent that owns this memory entry (`agt_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When this memory entry was first written (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"expires_at":{"description":"When this entry will be automatically deleted. `null` if the entry does not expire.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Working memory entry ID (`amm_...`).","example":"amm_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"key":{"description":"The string key used to look up this memory entry within the agent's memory namespace.","example":"user_preference","type":"string"},"updated_at":{"description":"When this memory entry was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"value":{"description":"The string value stored under `key`. May be any serialized content the agent wrote.","example":"string","type":"string"}},"required":["id"],"type":"object"},"WorkingMemoryEntryListResponse":{"description":"Paginated list of working memory entries stored for an agent. Includes page metadata to support sequential page traversal.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","expires_at":"2024-01-01T00:00:00Z","id":"amm_0aBcDeFgHiJkLmNoPqRsTu","key":"user_preference","updated_at":"2024-01-01T00:00:00Z","value":"string"}],"has_next":true,"has_prev":true,"page":1,"page_size":20,"total_entries":1,"total_pages":1},"properties":{"data":{"description":"Array of working memory entry objects for the current page.","items":{"$ref":"#/components/schemas/WorkingMemoryEntry"},"type":"array"},"has_next":{"description":"`true` if a subsequent page exists and can be fetched by incrementing the page number.","example":true,"type":"boolean"},"has_prev":{"description":"`true` if a previous page exists and can be fetched by decrementing the page number.","example":true,"type":"boolean"},"page":{"description":"The current page number, starting at `1`.","example":1,"type":"integer"},"page_size":{"description":"Maximum number of entries returned per page.","example":20,"type":"integer"},"total_entries":{"description":"Total number of working memory entries matching the query across all pages.","example":1,"type":"integer"},"total_pages":{"description":"Total number of pages given the current `page_size`.","example":1,"type":"integer"}},"required":["data"],"type":"object"}}},"info":{"description":"Agent-first API for runtime + developer control-plane operations (users, teams, agents, routines, context, workflows, integrations, and webhooks).","title":"ArchAstro Platform API","version":"v1"},"openapi":"3.0.0","paths":{"/api/v1/activity_feed":{"get":{"description":"Returns a cursor-paginated list of activity feed entries visible to the\nauthenticated user. Entries are ordered from newest to oldest by default.\nUse `before_cursor` to page backward and `after_cursor` to page forward.\n\nResults are scoped to the caller's app. All filter params are optional and\ncan be combined. Passing multiple values in an array filter returns entries\nmatching any of the supplied values (OR semantics).\n\nInvalid `kind` or `level` values return a 400 error listing the accepted\nvalues rather than being silently ignored.","operationId":"get_api_v1_activity_feed","parameters":[{"description":"Maximum number of entries to return per page. Defaults to 50; maximum is 100.","example":1,"in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"One or more entry kinds to include. Accepted values: routine_run, automation_run, thread_story, agent_quality_verdict, generic. Omit to return all kinds.","example":["string"],"in":"query","name":"kind","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"One or more severity levels to include. Accepted values: debug, info, warn, error, audit. Omit to return all levels.","example":["string"],"in":"query","name":"level","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Opaque cursor from a previous response's `after_cursor` field. Returns entries newer than the cursor's position.","example":"string","in":"query","name":"after_cursor","required":false,"schema":{"type":"string"}},{"description":"Opaque cursor from a previous response's `before_cursor` field. Returns entries older than the cursor's position.","example":"string","in":"query","name":"before_cursor","required":false,"schema":{"type":"string"}},{"description":"Restrict results to entries associated with these agent IDs (`agt_...`). Accepts multiple values.","example":["string"],"in":"query","name":"agent","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Restrict results to entries associated with these organization IDs (`org_...`). Accepts multiple values.","example":["string"],"in":"query","name":"org","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Restrict results to entries associated with these team IDs (`tem_...`). Accepts multiple values.","example":["string"],"in":"query","name":"team","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Restrict results to entries associated with these thread IDs (`thr_...`). Accepts multiple values.","example":["string"],"in":"query","name":"thread","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Restrict results to entries that share this correlation group identifier. Useful for tracing a chain of related events.","example":"string","in":"query","name":"correlation_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Cursor-paginated list of activity feed entries.","example":{"after_cursor":"string","before_cursor":"string","data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"has_more":true},"properties":{"after_cursor":{"description":"Opaque cursor to pass as `after_cursor` to retrieve the next newer page. Absent when no newer entries exist.","example":"string","type":"string"},"before_cursor":{"description":"Opaque cursor to pass as `before_cursor` to retrieve the next older page. Absent when no older entries exist.","example":"string","type":"string"},"data":{"description":"Array of activity feed entry objects for the current page, ordered newest first.","example":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"A single event record in an activity feed, capturing what happened, who caused it, and which resources were involved.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"The agent that produced this event. Returns an agent ID (`agi_...`) by default, or an expanded agent object when the association is loaded. `null` if no agent is associated.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","oneOf":[{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},{"type":"string"}]},"app":{"description":"ID of the application that produced this entry (`dap_...`). `null` if not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Array of attachment objects associated with this entry. Each attachment has a `type` field (e.g. `\"file\"`, `\"task\"`, `\"artifact\"`) and type-specific additional fields. Empty array when there are no attachments.","example":[{}],"items":{"type":"object"},"type":"array"},"automation_run":{"description":"ID of the automation run that produced this entry (`atr_...`). `null` if not produced by an automation run.","example":"atr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content":{"description":"A longer explanation of the event rendered as Markdown. `null` if no additional content is available.","example":"The agent completed the task successfully.","type":"string"},"correlation_id":{"description":"An opaque string used to group related entries together. Entries sharing the same `correlation_id` belong to a single logical operation. `null` if not correlated.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"created_at":{"description":"When this activity feed entry was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Activity feed entry ID (`afe_...`).","example":"afe_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"The type of event this entry represents, e.g. `\"agent_step\"` or `\"tool_call\"`. Determines how `title`, `content`, and `attachments` should be interpreted.","example":"agent_step","type":"string"},"level":{"description":"Severity level of the event. One of `\"info\"`, `\"warning\"`, or `\"error\"`. `null` if no severity is set.","example":"info","type":"string"},"metadata":{"description":"Arbitrary key-value metadata stored on this entry. Returns an empty object when no metadata is set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization this entry belongs to (`org_...`). `null` if not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"routine_run":{"description":"ID of the agent routine run that produced this entry (`arr_...`). `null` if not produced by a routine run.","example":"arr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment this entry was generated in. `null` in production contexts.","example":"string","type":"string"},"session_record":{"description":"ID of the agent session record this entry belongs to (`ase_...`). `null` if not part of an agent session.","example":"ase_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"team":{"description":"ID of the team this entry is associated with (`tem_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this entry is associated with (`thr_...`). `null` if not linked to a thread.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"A one-line human-readable summary of the event. `null` if the entry has no title.","example":"Example Title","type":"string"},"updated_at":{"description":"When this activity feed entry was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"The user who triggered this event. Returns a user ID (`usr_...`) by default, or an expanded user object when the association is loaded. `null` if no user is associated.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","oneOf":[{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},{"type":"string"}]}},"required":["id"],"type":"object"},"type":"array"},"has_more":{"description":"`true` when additional entries exist beyond this page in the requested direction.","example":true,"type":"boolean"}},"required":["data","has_more"],"type":"object"}}},"description":"Successful response"},"400":{"description":"Invalid cursor"},"401":{"description":"Unauthorized"},"403":{"description":"App-scoped token required. Use a token scoped to the target app."}},"summary":"List activity feed entries","x-auth":["bearer","publishable_key"]}},"/api/v1/agents":{"get":{"description":"Returns a paginated list of agents visible to the authenticated caller. Results are\nordered by creation time descending.\n\nUse `search` to filter by name, org, team, or owner fields. Use `user` or `org_id`\nto scope the list to a specific owner. Use `template_config` to find agents whose\nlast applied template matches a given config ID.\n\nPagination is page-based: pass `page` and `page_size` to navigate through large\nresult sets. When called under a developer app scope, only agents belonging to that\napp are returned.","operationId":"get_api_v1_agents","parameters":[{"description":"Config ID (`cfg_...`) or `lookup_key` of an AgentTemplate. Returns only agents whose last applied template matches.","example":"string","in":"query","name":"template_config","required":false,"schema":{"type":"string"}},{"description":"Free-text search string matched against the agent name, org, team, and owner fields.","example":"string","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Number of agents to return per page. Defaults to `25`.","example":1,"in":"query","name":"page_size","required":false,"schema":{"type":"integer"}},{"description":"Organization ID (`org_...`) to filter by. Returns only agents owned by this org.","example":"string","in":"query","name":"org_id","required":false,"schema":{"type":"string"}},{"description":"Page number to retrieve, 1-indexed. Defaults to `1`.","example":1,"in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"User ID (`usr_...`) to filter by. Returns only agents owned by this user.","example":"string","in":"query","name":"user","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"}},"summary":"List agents","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new agent. Supports two mutually exclusive provisioning modes.\n\n**Template mode** — pass `template` with the ID or `lookup_key` of an existing\nAgentTemplate config. The agent's tools, routines, skills, and installations are\nprovisioned from that template's `config_ref` entries.\n\n**Bundle mode** — pass `template_bundle` with a self-contained install payload\n(AgentTemplate body plus every skill, script, and config it references). The entire\nbundle commits in a single transaction; any failure rolls back the whole install and\nthe response includes `installed_configs[]` — one entry per persisted config.\n\nPass exactly one of `template` or `template_bundle`. If neither is supplied, `name`\nis required and a blank agent is created. Requires authentication; when called under\na developer app scope (`/developer/apps/:app/...`), the caller must hold the app scope\nfor the target app.","operationId":"post_api_v1_agents","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"email":"user@example.com","identity":"string","lookup_key":"string","metadata":{"key":"value"},"model":"string","name":"Example Name","org":"string","originator":"string","phone_number":"+15555550123","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"team":"string","template":"string","template_bundle":{"configs":[{"content":"string","content_type":"application/json","relative_path":"tools/my-tool.yaml"}],"lookup_key_suffix":"string","setup_actions":[{"depends_on":["string"],"description":"An example description.","kind":"env_var","params":{"key":"value"},"required":true,"sort_order":1,"title":"Example Title","verify_config":{"key":"value"}}],"skills":[{"content":"string","content_type":"application/json","files":[{"content":"string","content_type":"application/json","relative_path":"skills/my-skill/helpers.md"}],"relative_path":"skills/my-skill/SKILL.md"}],"template":{"content":"string","content_type":"application/json","relative_path":"agent.yaml"}},"user":"string"},"properties":{"acl":{"description":"Access control list controlling which users, teams, or orgs can read or manage this agent.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"email":{"description":"Email address assigned to the agent. Used as the agent's contact identity.","example":"user@example.com","type":"string"},"identity":{"description":"System-prompt identity string describing who the agent is. Passed verbatim to the model on each conversation turn.","example":"string","type":"string"},"lookup_key":{"description":"Stable, unique slug used to look up this agent by name instead of ID. Must be unique within the owning app or org.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value map stored on the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"model":{"description":"Default AI model identifier for this agent, e.g. `claude-sonnet-4-5`. Overridden per-request when the caller specifies a model.","example":"string","type":"string"},"name":{"description":"Display name for the agent. Required when neither `template` nor `template_bundle` is provided.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that should own this agent. Mutually exclusive with `team` and `user`.","example":"string","type":"string"},"originator":{"description":"Free-form label identifying the source or author of the agent, e.g. a user ID, a deploy pipeline, or a slug.","example":"string","type":"string"},"phone_number":{"description":"Phone number assigned to the agent in E.164 format, e.g. `+15550001234`.","example":"+15555550123","type":"string"},"profile_picture":{"description":"Profile picture to attach to the agent. All three subfields are required when this object is present.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded binary content of the image.","example":"string","type":"string"},"filename":{"description":"Original filename of the image, e.g. `avatar.png`.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `image/png` or `image/jpeg`.","example":"application/json","type":"string"}},"required":["data","filename","mime_type"],"type":"object"},"team":{"description":"Team ID (`team_...`) that should own this agent. Mutually exclusive with `org` and `user`.","example":"string","type":"string"},"template":{"description":"ID (`cfg_...`) or `lookup_key` of an existing AgentTemplate config to provision from. Mutually exclusive with `template_bundle`.","example":"string","type":"string"},"template_bundle":{"description":"Self-contained install bundle containing an AgentTemplate plus all referenced skills and configs. The entire bundle is committed atomically. Mutually exclusive with `template`.","example":{"configs":[{"content":"string","content_type":"application/json","relative_path":"tools/my-tool.yaml"}],"lookup_key_suffix":"string","setup_actions":[{"depends_on":["string"],"description":"An example description.","kind":"env_var","params":{"key":"value"},"required":true,"sort_order":1,"title":"Example Title","verify_config":{"key":"value"}}],"skills":[{"content":"string","content_type":"application/json","files":[{"content":"string","content_type":"application/json","relative_path":"skills/my-skill/helpers.md"}],"relative_path":"skills/my-skill/SKILL.md"}],"template":{"content":"string","content_type":"application/json","relative_path":"agent.yaml"}},"properties":{"configs":{"description":"Additional configuration resources (scripts, model configs, routine templates) referenced by `config_ref` entries in the template.","example":[{"content":"string","content_type":"application/json","relative_path":"tools/my-tool.yaml"}],"items":{"description":"A supporting configuration resource included in a template bundle, such as a script, model config, or routine template referenced by the agent template.","example":{"content":"string","content_type":"application/json","relative_path":"tools/my-tool.yaml"},"properties":{"content":{"description":"Full text content of the configuration file.","example":"string","type":"string"},"content_type":{"description":"MIME type of the configuration content, e.g. `\"application/x-yaml\"` or `\"application/json\"`. `null` if not specified.","example":"application/json","type":"string"},"relative_path":{"description":"Bundle-relative path to this config file. The path determines the config kind and its storage identity within the installation.","example":"tools/my-tool.yaml","type":"string"}},"required":["content","relative_path"],"type":"object"},"type":"array"},"lookup_key_suffix":{"description":"A string appended to the lookup key of every uploaded config and rewritten into every `config_ref` in the template body. Should be stable for a given install and unique across installs to avoid key collisions.","example":"string","type":"string"},"setup_actions":{"description":"Post-install checklist items created alongside the agent. Each action is inserted as a pending setup step that the user must complete before the agent is fully operational.","example":[{"depends_on":["string"],"description":"An example description.","kind":"env_var","params":{"key":"value"},"required":true,"sort_order":1,"title":"Example Title","verify_config":{"key":"value"}}],"items":{"description":"A post-install setup checklist item that the user must complete before the installed agent is fully operational.","example":{"depends_on":["string"],"description":"An example description.","kind":"env_var","params":{"key":"value"},"required":true,"sort_order":1,"title":"Example Title","verify_config":{"key":"value"}},"properties":{"depends_on":{"description":"List of other setup action identifiers that must be completed before this action becomes actionable.","example":["string"],"items":{"type":"string"},"type":"array"},"description":{"description":"Markdown-formatted instructions or context shown beneath the checklist item. `null` if not provided.","example":"An example description.","type":"string"},"kind":{"description":"Category of setup step. One of `\"env_var\"` (configure an environment variable), `\"install\"` (complete an installation step), or `\"custom\"` (a user-defined action).","example":"env_var","type":"string"},"params":{"description":"Kind-specific configuration for the action. For `\"env_var\"` steps this typically includes `key` and `scope`; for `\"install\"` steps it includes `installation_kind`. Shape varies by `kind`.","example":{"key":"value"},"type":"object"},"required":{"description":"When `true`, this action must be completed before the checklist progress bar reaches 100%. Defaults to `true`.","example":true,"type":"boolean"},"sort_order":{"description":"Numeric sort position controlling the display order of this action in the checklist. Defaults to `0` when not specified.","example":1,"type":"integer"},"title":{"description":"Short human-readable label displayed in the setup checklist.","example":"Example Title","type":"string"},"verify_config":{"description":"Configuration passed to the runtime verifier to determine whether the action has been completed, e.g. `{\"type\": \"secret_present\"}`. `null` if no automated verification is configured.","example":{"key":"value"},"type":"object"}},"required":["kind","title"],"type":"object"},"type":"array"},"skills":{"description":"Skill bundles referenced by the template. Each entry includes the skill root and any supporting files.","example":[{"content":"string","content_type":"application/json","files":[{"content":"string","content_type":"application/json","relative_path":"skills/my-skill/helpers.md"}],"relative_path":"skills/my-skill/SKILL.md"}],"items":{"description":"A skill to install as part of a template bundle, consisting of a root `SKILL.md` definition and any accompanying support files.","example":{"content":"string","content_type":"application/json","files":[{"content":"string","content_type":"application/json","relative_path":"skills/my-skill/helpers.md"}],"relative_path":"skills/my-skill/SKILL.md"},"properties":{"content":{"description":"Full text content of the `SKILL.md` file.","example":"string","type":"string"},"content_type":{"description":"MIME type of the `SKILL.md` content. Defaults to `text/markdown` when omitted.","example":"application/json","type":"string"},"files":{"description":"Additional files nested inside the skill folder, each with its own path and content.","example":[{"content":"string","content_type":"application/json","relative_path":"skills/my-skill/helpers.md"}],"items":{"description":"A single file nested inside a skill folder, included as part of an install bundle.","example":{"content":"string","content_type":"application/json","relative_path":"skills/my-skill/helpers.md"},"properties":{"content":{"description":"Full text content of the file.","example":"string","type":"string"},"content_type":{"description":"MIME type of the file content. Defaults to a value inferred from the file extension when omitted.","example":"application/json","type":"string"},"relative_path":{"description":"Path of this file relative to the skill folder root, e.g. `\"skills/my-skill/helpers.md\"`.","example":"skills/my-skill/helpers.md","type":"string"}},"required":["content","relative_path"],"type":"object"},"type":"array"},"relative_path":{"description":"Bundle-relative path to the skill root, which must end in `/SKILL.md` (e.g. `\"skills/my-skill/SKILL.md\"`).","example":"skills/my-skill/SKILL.md","type":"string"}},"required":["content","relative_path"],"type":"object"},"type":"array"},"template":{"description":"The agent template definition to install, including its path and raw content.","example":{"content":"string","content_type":"application/json","relative_path":"agent.yaml"},"properties":{"content":{"description":"Full text content of the agent template file, typically a YAML document.","example":"string","type":"string"},"content_type":{"description":"MIME type of the template content. Defaults to `application/x-yaml` when omitted.","example":"application/json","type":"string"},"relative_path":{"description":"Bundle-relative path to the template file, used to derive its storage identity (e.g. `\"agent.yaml\"`).","example":"agent.yaml","type":"string"}},"required":["content","relative_path"],"type":"object"}},"required":["template"],"type":"object"},"user":{"description":"User ID (`usr_...`) that should own this agent. Mutually exclusive with `org` and `team`.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — app scope required"},"404":{"description":"Template not found"},"409":{"description":"Conflict"},"422":{"description":"Validation failed"}},"summary":"Create an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}":{"delete":{"description":"Permanently deletes an agent and all of its associated resources. This action cannot\nbe undone.\n\nThe authenticated caller must own the agent or hold sufficient permissions within its\nowning org or team. When called under a developer app scope, the caller must hold the\napp scope for the target app.","operationId":"delete_api_v1_agents__agent","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent to delete.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"403":{"description":"App-scoped token required. Use a token scoped to the target app.; Permission denied. The connected account may not have the required permissions. Try reconnecting your account."},"404":{"description":"Agent not found"}},"summary":"Delete an agent","x-auth":["bearer","publishable_key"]},"get":{"description":"Returns the agent identified by ID or `lookup_key`. The authenticated caller must\nown the agent or hold sufficient permissions within its owning org or team.\n\nWhen called under a developer app scope, the agent must belong to that app. Use the\nlist endpoint to retrieve many agents at once.","operationId":"get_api_v1_agents__agent","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent to retrieve.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"Retrieve an agent","x-auth":["bearer","publishable_key"]},"patch":{"description":"Updates one or more fields on an existing agent. Only the fields you supply are\nchanged; omitted fields retain their current values.\n\nTo clear the agent's default model, pass `model` as an empty string. The\nauthenticated caller must own the agent or hold write permissions within its owning\norg or team. When called under a developer app scope, the caller must hold the app\nscope for the target app.","operationId":"patch_api_v1_agents__agent","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent to update.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"email":"user@example.com","identity":"string","lookup_key":"string","metadata":{"key":"value"},"model":"string","name":"Example Name","org":"string","originator":"string","phone_number":"+15555550123","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"team":"string","user":"string"},"properties":{"acl":{"description":"Replacement access control list. Fully replaces the existing ACL.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"email":{"description":"New email address for the agent.","example":"user@example.com","type":"string"},"identity":{"description":"Replacement identity system-prompt string describing who the agent is.","example":"string","type":"string"},"lookup_key":{"description":"New `lookup_key` slug. Must be unique within the owning app or org.","example":"string","type":"string"},"metadata":{"description":"Replacement key-value metadata map. The entire map is replaced, not merged.","example":{"key":"value"},"type":"object"},"model":{"description":"New default AI model identifier, e.g. `claude-sonnet-4-5`. Pass an empty string to clear the agent's default model.","example":"string","type":"string"},"name":{"description":"New display name for the agent.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) to transfer ownership to.","example":"string","type":"string"},"originator":{"description":"Replacement originator label identifying the source or author of the agent.","example":"string","type":"string"},"phone_number":{"description":"New phone number for the agent in E.164 format, e.g. `+15550001234`.","example":"+15555550123","type":"string"},"profile_picture":{"description":"Replacement profile picture. All three subfields are required when this object is present.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded binary content of the image.","example":"string","type":"string"},"filename":{"description":"Original filename of the image, e.g. `avatar.png`.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `image/png` or `image/jpeg`.","example":"application/json","type":"string"}},"required":["data","filename","mime_type"],"type":"object"},"team":{"description":"Team ID (`team_...`) to transfer ownership to.","example":"string","type":"string"},"user":{"description":"User ID (`usr_...`) to transfer ownership to.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"},"422":{"description":"Validation failed"}},"summary":"Update an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_computers":{"get":{"description":"Returns all computers belonging to the authenticated app, ordered by creation\ntime descending. Pass `agent` to scope the results to a single agent's\ncomputers. When `agent` is omitted, computers for all agents in the app are\nreturned.\n\nRequires an app-scoped API key. If the specified agent does not exist or does\nnot belong to the app, the endpoint returns 404.","operationId":"get_api_v1_agents__agent_agent_computers","parameters":[{"description":"Agent ID (`agt_...`). When provided, only computers belonging to this agent are returned.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentComputerListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"List computers","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates and provisions a new computer resource associated with the specified\nagent. The computer is allocated in the requested region (defaulting to `iad`)\nand its status transitions from `provisioning` to `running` once it is ready.\n\nRequires an app-scoped API key. The agent identified by `agent` must belong\nto the same app. Supplying a `lookup_key` lets you retrieve this computer\nlater without storing its ID — the key must be unique within the app.","operationId":"post_api_v1_agents__agent_agent_computers","parameters":[{"description":"Agent ID (`agt_...`). The computer is associated with this agent.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"config":{},"lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","region":"string"},"properties":{"config":{"description":"Provider-specific configuration for the computer. Supported keys vary by region and plan.","example":{},"type":"object"},"lookup_key":{"description":"Stable, user-defined key for this computer. Must be unique within the app. Use it to look up the computer without storing its ID.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata to attach to the computer. Not interpreted by the platform; returned as-is on all subsequent reads.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the computer.","example":"Example Name","type":"string"},"region":{"description":"Region in which to provision the computer, e.g. `\"iad\"`. Defaults to `\"iad\"` when omitted.","example":"string","type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentComputer"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"},"422":{"description":"Validation failed"}},"summary":"Provision a computer for an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_env_vars":{"get":{"description":"Returns all environment variables defined for the specified agent. Variable\nvalues are always masked in the response; only the last four characters are\nvisible. To inspect a specific variable, use the retrieve endpoint.\n\nThe authenticated user must have access to the agent's parent app. Pass the\napp scope via the `app` parameter when calling with an API key that is scoped\nto a specific app. Results are returned in an unordered flat list.","operationId":"get_api_v1_agents__agent_agent_env_vars","parameters":[{"description":"Agent ID (`agt_...`). Returns environment variables belonging to this agent.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEnvVarMaskedList"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"App-scoped token required. Use a token scoped to the target app.; Forbidden"},"404":{"description":"Agent not found"}},"summary":"List an agent's environment variables","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new environment variable for the specified agent. The variable is\nstored securely and the plaintext `value` is never returned after creation;\nsubsequent reads return a masked representation showing only the last four\ncharacters.\n\nThe authenticated user must have access to the agent's parent app. Pass the\napp scope via the `app` parameter when calling with an API key that is scoped\nto a specific app. Each `key` must be unique within the agent; attempting to\ncreate a duplicate key returns a validation error.","operationId":"post_api_v1_agents__agent_agent_env_vars","parameters":[{"description":"Agent ID (`agt_...`). The agent must belong to an app the caller can access.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"description":"An example description.","key":"string","value":"string"},"properties":{"description":{"description":"Optional human-readable note describing what the variable is used for.","example":"An example description.","type":"string"},"key":{"description":"Environment variable name, e.g. `WEBHOOK_SECRET`. Must be unique within the agent.","example":"string","type":"string"},"value":{"description":"Plaintext secret value to store. The value is encrypted at rest and never returned in full.","example":"string","type":"string"}},"required":["key","value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEnvVarMasked"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"App-scoped token required. Use a token scoped to the target app.; Forbidden"},"404":{"description":"Not found"},"422":{"description":"Validation failed"}},"summary":"Create an agent environment variable","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_health_actions":{"get":{"description":"Returns all health actions associated with a given agent. Health actions\nrepresent required or recommended steps — such as setting environment\nvariables, completing OAuth installations, or running custom verifiers —\nthat an agent needs to reach a healthy state.\n\nResults are not paginated; the full list for the agent is returned. Use\nthe `source`, `status`, and `kind` filters to narrow results to the\nsubset your UI or workflow needs. Multiple values for the same filter\nare treated as OR (e.g. passing two statuses returns actions matching\neither). The caller must be authenticated and scoped to the app that\nowns the agent.","operationId":"get_api_v1_agents__agent_agent_health_actions","parameters":[{"description":"Agent ID (`agt_...`) or lookup key of the agent whose health actions you want to list.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}},{"description":"Filter results to actions from one or more lifecycle stages. Accepted values: `\"setup\"` (actions created during agent installation) and `\"health\"` (ongoing health checks). Omit to return actions from all stages.","example":["string"],"in":"query","name":"source","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter results to actions in one or more statuses. Accepted values: `\"pending\"`, `\"completed\"`, `\"skipped\"`, and `\"degraded\"`. Omit to return actions in all statuses.","example":["string"],"in":"query","name":"status","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter results to actions of one or more kinds. Accepted values: `\"env_var\"` (a required secret or config value), `\"install\"` (an OAuth or integration install step), and `\"custom\"` (a platform-defined check). Omit to return all kinds.","example":["string"],"in":"query","name":"kind","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthActionListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"App-scoped token required. Use a token scoped to the target app.; Forbidden"},"404":{"description":"Agent not found"}},"summary":"List health actions for an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_installations":{"get":{"description":"Returns all installations belonging to the specified agent, across all kinds and\nstates. Use this endpoint to inspect which external services and enablement channels\nan agent is connected to.\n\nResults are scoped to the authenticated app and are returned in an unordered array.\nTo list installations across all agents in an app, use the top-level List\nInstallations endpoint instead. The caller must have app scope for the app that\nowns the agent.","operationId":"get_api_v1_agents__agent_agent_installations","parameters":[{"description":"Agent ID (`agt_...`) whose installations you want to retrieve.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallationListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"List installations for an agent","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new installation for an agent, connecting it to an external service or\nenablement channel via the specified `kind`. The installation begins in a pending\nstate unless an integration is supplied at creation time, in which case it is\nactivated immediately.\n\nSupply `shared_integration` to bind an existing org- or app-level integration, or\nsupply `integration` to create a new integration inline and activate the installation\nin a single request. Supplying both fields returns 422.\n\nUse `lookup_key` to assign a stable identifier you can reference later in knowledge\nsearch `source_refs`. The key must be unique within the app, org, and sandbox\ncombination. The caller must have app scope for the app that owns the agent.","operationId":"post_api_v1_agents__agent_agent_installations","parameters":[{"description":"Agent ID (`agt_...`) that will own this installation.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"config":{},"integration":{"access_token":"string","installation_id":"string","metadata":{"key":"value"},"refresh_token":"string","workspace_key":"example-slug"},"kind":"string","lookup_key":"string","shared_integration":"string"},"properties":{"config":{"description":"Kind-specific configuration object. Shape varies by `kind`; omit if the kind requires no initial configuration.","example":{},"type":"object"},"integration":{"description":"Inline integration fields to create for `integration/*` kinds. When provided, a new Integration record is created and the installation is activated immediately. Mutually exclusive with `shared_integration`.","example":{"access_token":"string","installation_id":"string","metadata":{"key":"value"},"refresh_token":"string","workspace_key":"example-slug"},"properties":{"access_token":{"description":"OAuth access token or static API key used by `oauth` providers to authenticate requests on behalf of the user.","example":"string","type":"string"},"installation_id":{"description":"External installation identifier used by `app_installation` providers, e.g. a GitHub App installation ID or a Slack team ID.","example":"string","type":"string"},"metadata":{"description":"Arbitrary provider-specific metadata, e.g. `{\"bot_user_id\": \"U012AB3CD\"}` for Slack. Stored alongside the integration and made available to connector logic.","example":{"key":"value"},"type":"object"},"refresh_token":{"description":"OAuth refresh token used to obtain a new `access_token` when the current one expires. Omit for providers that do not issue refresh tokens.","example":"string","type":"string"},"workspace_key":{"description":"Provider-specific workspace or team identifier, e.g. a Slack workspace slug. Used to scope the integration to a particular workspace.","example":"example-slug","type":"string"}},"type":"object"},"kind":{"description":"Installation kind that determines the external service being connected. Examples: `\"enablement/github_app\"`, `\"enablement/slack_bot\"`, `\"integration/github\"`, `\"integration/gmail\"`, `\"web/site\"`. Use the List Kinds endpoint to retrieve all supported values.","example":"string","type":"string"},"lookup_key":{"description":"Stable identifier you assign to this installation. Propagated to backing context source rows so they can be referenced via knowledge search `source_refs`. Must contain only lowercase letters, numbers, underscores, or hyphens (max 100 characters). Must be unique within the same app, org, and sandbox combination. Omit to skip stable referencing.","example":"string","type":"string"},"shared_integration":{"description":"ID of an existing shared org- or app-level integration to bind to this installation. Mutually exclusive with `integration`.","example":"string","type":"string"}},"required":["kind"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Installation"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"},"422":{"description":"Validation failed"}},"summary":"Create an installation","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_installations/kinds":{"get":{"description":"Returns the full catalogue of installation kinds supported by the platform. Use\nthe returned `kind` values when calling the Create Installation endpoint.\n\nThe list is platform-wide and does not vary by agent. The `agent` parameter is\naccepted for future per-agent filtering but is currently unused. The caller must\nhave app scope to call this endpoint.","operationId":"get_api_v1_agents__agent_agent_installations_kinds","parameters":[{"description":"Agent ID (`agt_...`). Accepted for forward compatibility but currently does not filter the response.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallationKindListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"}},"summary":"List available installation kinds","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_routines":{"post":{"description":"Creates a new routine and attaches it to the specified agent. Routines define\nhow an agent responds to events or a cron schedule; the `handler_type` controls\nwhich execution model is used.\n\nThe routine is created in `\"draft\"` status by default. To start processing\nevents immediately, either pass `status: \"active\"` or call the activate\nendpoint after creation. Scheduled routines must run no more frequently than\nonce per hour. Requires app scope.","operationId":"post_api_v1_agents__agent_agent_routines","parameters":[{"description":"Agent ID (`agt_...`) that this routine will be attached to.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"config":"string","description":"An example description.","event_config":{},"event_type":"string","handler_type":"string","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","preset_config":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"preset_name":"Example Name","schedule":"string","script":"string","status":"string","steps":[{"config":"string","handler_type":"preset","inputs":{},"name":"Example Name","on_error":"halt","output_key":"string","preset_config":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"preset_name":"Example Name","script":"string"}],"trigger_context":"string"},"properties":{"acl":{"description":"Access control list governing who can read or manage this routine.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"config":{"description":"Workflow config ID (`cfg_...`). Required when `handler_type` is `\"workflow_graph\"`.","example":"string","type":"string"},"description":{"description":"Optional human-readable description of what this routine does.","example":"An example description.","type":"string"},"event_config":{"description":"Mapping of event types to trigger configuration. Each key is an event type string; each value is an object with a `\"filters\"` map and an optional `\"dedupe_key_path\"` (a JSON path used to deduplicate events, e.g. `\"$.thread.id\"`).","example":{},"type":"object"},"event_type":{"description":"Event type that triggers this routine. Deprecated — use `event_config` instead.","example":"string","type":"string"},"handler_type":{"description":"Execution model for this routine. One of `\"workflow_graph\"`, `\"script\"`, `\"preset\"`, or `\"chain\"`.","example":"string","type":"string"},"lookup_key":{"description":"Stable, unique key you assign to this routine for deterministic lookup. Must be unique within the app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata you can attach to the routine. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the routine.","example":"Example Name","type":"string"},"preset_config":{"description":"Configuration passed to the preset at runtime. Used when `handler_type` is `\"preset\"`.","example":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"properties":{"instructions":{"description":"Custom task or behavior instructions for the preset (max 10,000 chars).","example":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","type":"string"},"llm":{"description":"LLM invocation settings (e.g. a `model` override for this routine/step).","example":{"model":"claude-sonnet-4-5"},"properties":{"model":{"description":"Model identifier to use for this routine or step, e.g. `\"claude-sonnet-4-5\"`. When omitted, the agent's default model is used.","example":"claude-sonnet-4-5","type":"string"}},"type":"object"},"session_mode":{"description":"Session mode: `stateless` (default, new session per trigger) or `session` (find-or-create a persistent session scoped by `session_scope`).","example":"stateless","type":"string"},"session_scope":{"description":"When `session_mode` is `session`, controls session scoping: `per_user` (default), `per_key`, `per_org`, or `global`.","example":"per_user","type":"string"},"structured_message_template_ids":{"description":"IDs of structured message templates that constrain the agent's responses to predefined structured formats.","example":["string"],"items":{"type":"string"},"type":"array"}},"type":"object"},"preset_name":{"description":"Name of the registered preset to use. Required when `handler_type` is `\"preset\"`.","example":"Example Name","type":"string"},"schedule":{"description":"Cron expression for time-triggered routines (e.g. `\"0 9 * * 1\"`). Must not be more frequent than once per hour.","example":"string","type":"string"},"script":{"description":"Inline script source. Required when `handler_type` is `\"script\"`.","example":"string","type":"string"},"status":{"description":"Initial lifecycle status. One of `\"draft\"` or `\"active\"`. Defaults to `\"draft\"`.","example":"string","type":"string"},"steps":{"description":"Ordered list of steps for a chain handler. Required when `handler_type` is `\"chain\"`; must be omitted or empty otherwise. Each step must have exactly one handler body field (`preset_name`, `script`, or `config`) matching that step's `handler_type`.","example":[{"config":"string","handler_type":"preset","inputs":{},"name":"Example Name","on_error":"halt","output_key":"string","preset_config":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"preset_name":"Example Name","script":"string"}],"items":{"description":"A single execution step within a chain-routine, describing the handler to invoke and how to handle errors or pass data between steps.","example":{"config":"string","handler_type":"preset","inputs":{},"name":"Example Name","on_error":"halt","output_key":"string","preset_config":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"preset_name":"Example Name","script":"string"},"properties":{"config":{"description":"ID of a saved config to use as the handler body. Required when `handler_type` is `\"workflow_graph\"`; also accepted for `\"script\"` as an alternative to an inline `script` value.","example":"string","type":"string"},"handler_type":{"description":"Execution handler for this step. One of `\"preset\"`, `\"script\"`, or `\"workflow_graph\"`.","example":"preset","type":"string"},"inputs":{"description":"Optional key-value map binding outputs from prior steps to this step's input variables.","example":{},"type":"object"},"name":{"description":"Optional label for this step. Must be unique within the chain when provided.","example":"Example Name","type":"string"},"on_error":{"description":"Error handling policy for this step. One of `\"halt\"` (default), `\"continue\"`, or `\"retry\"`.","example":"halt","type":"string"},"output_key":{"description":"Key under which this step's result is stored and addressable by downstream steps. Defaults to `name` when omitted.","example":"string","type":"string"},"preset_config":{"description":"Configuration overrides for the preset, using the same shape as the routine-level `preset_config`. You may include an `llm` key to override the agent's default model for this step. `null` if not provided.","example":{"instructions":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","llm":{"model":"claude-sonnet-4-5"},"session_mode":"stateless","session_scope":"per_user","structured_message_template_ids":["string"]},"properties":{"instructions":{"description":"Custom task or behavior instructions for the preset (max 10,000 chars).","example":"You are a helpful assistant. Answer questions concisely and cite sources when possible.","type":"string"},"llm":{"description":"LLM invocation settings (e.g. a `model` override for this routine/step).","example":{"model":"claude-sonnet-4-5"},"properties":{"model":{"description":"Model identifier to use for this routine or step, e.g. `\"claude-sonnet-4-5\"`. When omitted, the agent's default model is used.","example":"claude-sonnet-4-5","type":"string"}},"type":"object"},"session_mode":{"description":"Session mode: `stateless` (default, new session per trigger) or `session` (find-or-create a persistent session scoped by `session_scope`).","example":"stateless","type":"string"},"session_scope":{"description":"When `session_mode` is `session`, controls session scoping: `per_user` (default), `per_key`, `per_org`, or `global`.","example":"per_user","type":"string"},"structured_message_template_ids":{"description":"IDs of structured message templates that constrain the agent's responses to predefined structured formats.","example":["string"],"items":{"type":"string"},"type":"array"}},"type":"object"},"preset_name":{"description":"Name of the preset to invoke. Required when `handler_type` is `\"preset\"`.","example":"Example Name","type":"string"},"script":{"description":"Inline script source code to execute. Used when `handler_type` is `\"script\"` and no `config` is provided.","example":"string","type":"string"}},"required":["handler_type"],"type":"object"},"type":"array"},"trigger_context":{"description":"Context in which the routine is triggered. One of `\"chat_session\"` or `\"event\"`. Defaults to `\"event\"`.","example":"string","type":"string"}},"required":["handler_type","name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRoutine"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"},"422":{"description":"Validation failed"}},"summary":"Create a routine","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_tools":{"get":{"description":"Returns all tools for the authenticated app, optionally filtered by agent\nor tool kind. Both explicitly created tools and tools derived from connected\nintegrations (installation-sourced tools) are included in the response.\n\nInstallation-sourced tools appear with `source: \"installation\"` and\n`status: \"active\"`. They are synthesized at request time from connected\nintegrations and do not have a persistent tool ID of the `atl_...` form;\ntheir `id` is a composite of the installation ID and server tool type.\n\nUse the `agent` filter to retrieve tools for a specific agent. Supplying an\n`agent` ID that does not belong to the authenticated app returns 404.\nRequires app scope.","operationId":"get_api_v1_agents__agent_agent_tools","parameters":[{"description":"Filter by tool kind. One of `\"builtin\"` or `\"custom\"`. Omit to return tools of all kinds.","example":"string","in":"query","name":"kind","required":false,"schema":{"type":"string"}},{"description":"Filter results to tools belonging to this agent (`agt_...`). Omit to return tools across all agents in the app.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentToolListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"List agent tools","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new tool and attaches it to the specified agent. Tools can be\neither `\"builtin\"` (a platform-provided capability identified by\n`builtin_tool_key`) or `\"custom\"` (a caller-defined tool with its own name,\ndescription, parameter schema, and handler).\n\nNew tools are created in `\"draft\"` status by default unless `status:\n\"active\"` is explicitly supplied. Draft tools are not exposed to the LLM\nduring agent runs; call the activate endpoint to promote them.\n\nFor built-in tools that support multiple instances per agent (those whose\ncatalog entry has a `multi_instance_mode`), supply `name_prefix` to\nnamespace the LLM-facing tool names. Requires app scope.","operationId":"post_api_v1_agents__agent_agent_tools","parameters":[{"description":"Agent ID (`agt_...`) to attach the tool to.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"async":true,"builtin_tool_config":{},"builtin_tool_key":"string","config":"string","description":"An example description.","handler_type":"string","kind":"string","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","name_prefix":"string","parameters":{},"status":"string"},"properties":{"async":{"description":"When `true`, the tool executes asynchronously and the agent does not block waiting for a result. Applies to `\"custom\"` tools.","example":true,"type":"boolean"},"builtin_tool_config":{"description":"Configuration object for the built-in tool. Shape is defined by the catalog entry's `config_schema` for the chosen `builtin_tool_key`. Applies only to `\"builtin\"` tools.","example":{},"type":"object"},"builtin_tool_key":{"description":"Key identifying the built-in tool type to add (e.g. `\"knowledge_search\"`). Required when `kind` is `\"builtin\"`. Must match a key in the tool catalog.","example":"string","type":"string"},"config":{"description":"Config ID (`cfg_...`) referencing the script or workflow graph that implements the tool handler. Applies to `\"custom\"` tools.","example":"string","type":"string"},"description":{"description":"Human-readable description of what the tool does. Shown to the LLM as context. Applies primarily to `\"custom\"` tools.","example":"An example description.","type":"string"},"handler_type":{"description":"Execution handler for the tool. One of `\"script\"` or `\"workflow_graph\"`. Applies to `\"custom\"` tools.","example":"string","type":"string"},"kind":{"description":"Tool kind. One of `\"builtin\"` or `\"custom\"`.","example":"string","type":"string"},"lookup_key":{"description":"Optional stable identifier you can use to look up this tool without its ID. Must be unique within the app. Useful for idempotent provisioning.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata to attach to the tool. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name for the tool. Required when `kind` is `\"custom\"`.","example":"Example Name","type":"string"},"name_prefix":{"description":"Per-instance namespace for built-in tools that support multiple instances per agent. Stamped onto LLM-facing tool names (e.g. `\"org\"` produces `\"org_knowledge_search\"`). Must match `^[a-z][a-z0-9_]*$` and be at most 24 characters. Required for `\"namespaced\"` multi-instance tools; omit for single-instance tools.","example":"string","type":"string"},"parameters":{"description":"JSON Schema object describing the tool's input parameters. Used by the LLM to construct valid tool calls. Applies to `\"custom\"` tools.","example":{},"type":"object"},"status":{"description":"Initial status of the tool. One of `\"draft\"` or `\"active\"`. Defaults to `\"draft\"` when omitted.","example":"string","type":"string"}},"required":["kind"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTool"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"},"422":{"description":"Validation failed"}},"summary":"Create an agent tool","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/agent_working_memory":{"get":{"description":"Returns a paginated list of working memory entries belonging to the specified\nagent. Entries are key-value pairs the agent stores for context between\ninteractions. Results are ordered by creation time descending (newest first)\nand can be filtered with a substring search against the key name.\n\nRequires an app-scoped API key. The authenticated caller must have access to\nthe app the agent belongs to. Returns 403 if the key is not app-scoped, and\n404 if the agent does not exist within the accessible scope.","operationId":"get_api_v1_agents__agent_agent_working_memory","parameters":[{"description":"Agent ID (`agt_...`) whose working memory entries to retrieve.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}},{"description":"Number of entries to return per page. Defaults to 25.","example":1,"in":"query","name":"page_size","required":false,"schema":{"type":"integer"}},{"description":"Page number to retrieve, starting at 1. Defaults to 1.","example":1,"in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"Substring filter applied to entry keys (case-insensitive). Omit to return all keys.","example":"string","in":"query","name":"search","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkingMemoryEntryListResponse"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"List working memory entries for an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/export":{"get":{"description":"Reconstructs an AgentTemplate config from a deployed agent and all of its\nsub-resources (tools, routines, skills, installations). Returns the template\ndefinition together with every dependent config file (scripts, workflows, skills,\nschemas) and their raw content, producing a fully self-contained export bundle.\n\nUse this endpoint to snapshot an agent's current configuration for backup,\nmigration, or to seed a new Solution template. Pass `remove_identity: true` to\nstrip instance-specific fields (email, phone number) before export.\n\nThe authenticated caller must own the agent or hold sufficient permissions within\nits owning org or team. When called under a developer app scope, the caller must\nhold the app scope for the target app.","operationId":"get_api_v1_agents__agent_export","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent to export.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}},{"description":"When `true`, strips instance-unique identity fields (`email`, `phone_number`) from the exported template so it can be reused as a generic blueprint.","example":true,"in":"query","name":"remove_identity","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentExport"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"Export an agent as an AgentTemplate","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/health":{"get":{"description":"Returns an aggregate health profile for the specified agent, including an overall\nstatus, a numeric health score, recent activity metrics, and a list of recommended\nremediation actions.\n\nThe health check is computed on demand at request time. The `checked_at` timestamp\nin the response reflects when the evaluation ran. Use this endpoint to surface\ndiagnostics about tool availability, model configuration, and runtime activity in\ndashboards or monitoring workflows.\n\nThe authenticated caller must own the agent or hold sufficient permissions within\nits owning org or team. When called under a developer app scope, the caller must\nhold the app scope for the target app.","operationId":"get_api_v1_agents__agent_health","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent to evaluate.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentHealth"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"}},"summary":"Retrieve an agent's health profile","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/schedules":{"get":{"description":"Returns all schedules belonging to the specified agent in any status. Use the\n`status` parameter to narrow results to a single lifecycle state.\n\nRequires an app-scoped API key. The agent must belong to the app identified\nby the key.","operationId":"get_api_v1_agents__agent_schedules","parameters":[{"description":"Agent ID (`agi_...`). The agent whose schedules you want to retrieve.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}},{"description":"Filter results by schedule status. One of `\"active\"`, `\"paused\"`, `\"completed\"`, `\"cancelled\"`, or `\"expired\"`. Omit to return schedules in all statuses.","example":"string","in":"query","name":"status","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"A list of schedule objects for the agent.","example":{"data":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","cron_expression":"0 9 * * 1","id":"asc_0aBcDeFgHiJkLmNoPqRsTu","instructions":"Send a daily summary of open support tickets to the team Slack channel.","last_run_at":"2024-01-01T00:00:00Z","max_runs":10,"metadata":{"key":"value"},"next_run_at":"2024-01-01T00:00:00Z","run_count":1,"schedule_type":"recurring","scheduled_at":"2024-01-01T00:00:00Z","status":"active","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","timezone":"America/New_York","updated_at":"2024-01-01T00:00:00Z"}]},"properties":{"data":{"description":"Array of agent schedule objects matching the query.","example":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","cron_expression":"0 9 * * 1","id":"asc_0aBcDeFgHiJkLmNoPqRsTu","instructions":"Send a daily summary of open support tickets to the team Slack channel.","last_run_at":"2024-01-01T00:00:00Z","max_runs":10,"metadata":{"key":"value"},"next_run_at":"2024-01-01T00:00:00Z","run_count":1,"schedule_type":"recurring","scheduled_at":"2024-01-01T00:00:00Z","status":"active","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","timezone":"America/New_York","updated_at":"2024-01-01T00:00:00Z"}],"items":{"description":"A scheduled task created by an agent. Supports one-time and recurring (cron-based) execution patterns.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","cron_expression":"0 9 * * 1","id":"asc_0aBcDeFgHiJkLmNoPqRsTu","instructions":"Send a daily summary of open support tickets to the team Slack channel.","last_run_at":"2024-01-01T00:00:00Z","max_runs":10,"metadata":{"key":"value"},"next_run_at":"2024-01-01T00:00:00Z","run_count":1,"schedule_type":"recurring","scheduled_at":"2024-01-01T00:00:00Z","status":"active","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","timezone":"America/New_York","updated_at":"2024-01-01T00:00:00Z"},"properties":{"agent":{"description":"ID of the agent that owns this schedule (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app":{"description":"ID of the application the schedule belongs to (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the schedule was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"cron_expression":{"description":"Standard cron expression defining the recurrence pattern (e.g. `\"0 9 * * 1\"`). Present only when `schedule_type` is `\"recurring\"`. `null` for one-time schedules.","example":"0 9 * * 1","type":"string"},"id":{"description":"Schedule ID (`asc_...`).","example":"asc_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"instructions":{"description":"The task description the agent will execute when this schedule fires.","example":"Send a daily summary of open support tickets to the team Slack channel.","type":"string"},"last_run_at":{"description":"UTC datetime of the most recent successful execution. `null` if the schedule has never run.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"max_runs":{"description":"Maximum number of times a recurring schedule may fire before automatically transitioning to `\"completed\"`. `null` means no limit.","example":10,"type":"integer"},"metadata":{"description":"Arbitrary key-value pairs attached to the schedule by the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"next_run_at":{"description":"UTC datetime of the next planned execution. `null` if the schedule has completed, been cancelled, or has not yet been computed.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"run_count":{"description":"Total number of times this schedule has fired.","example":1,"type":"integer"},"schedule_type":{"description":"Determines how the schedule repeats. `\"once\"` fires a single time at `scheduled_at` then transitions to `\"completed\"`. `\"recurring\"` fires on the `cron_expression` and reschedules automatically.","example":"recurring","type":"string"},"scheduled_at":{"description":"The exact UTC datetime at which a one-time schedule fires. Present only when `schedule_type` is `\"once\"`. `null` for recurring schedules.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"status":{"description":"Current lifecycle status of the schedule. One of `\"active\"` (will fire as planned), `\"paused\"` (temporarily suspended), `\"completed\"` (has run its last execution), `\"cancelled\"` (manually stopped), or `\"expired\"` (past its valid window).","example":"active","type":"string"},"thread":{"description":"Thread ID (`thr_...`) this schedule is bound to. When set, the scheduled task is delivered into the thread rather than creating a new session. `null` for session-based schedules.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"timezone":{"description":"IANA timezone name used to interpret the cron expression or `scheduled_at` (e.g. `\"America/New_York\"`). Defaults to `\"Etc/UTC\"`.","example":"America/New_York","type":"string"},"updated_at":{"description":"When the schedule was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"type":"object"}}},"description":"Successful response"},"400":{"description":"Invalid status value"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"}},"summary":"List schedules for an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/schedules/{schedule}":{"get":{"description":"Returns a single schedule belonging to the specified agent. Use this endpoint\nto fetch the current state, next run time, and configuration of an individual\nschedule.\n\nRequires an app-scoped API key. Both the agent and the schedule must belong\nto the app identified by the key. Returns 404 if the schedule does not exist\nor belongs to a different agent.","operationId":"get_api_v1_agents__agent_schedules__schedule","parameters":[{"description":"Agent ID (`agi_...`). The agent that owns the schedule.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}},{"description":"Schedule ID (`asc_...`). The schedule to retrieve.","example":"string","in":"path","name":"schedule","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSchedule"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Schedule not found"}},"summary":"Retrieve a schedule","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/search":{"post":{"description":"Performs a semantic search over an agent's knowledge base and returns a ranked,\n`kind`-discriminated list of matching items.\n\nTwo item kinds may appear in `data`:\n\n- `\"chunk\"` — chunk-level results from the agent's context store. Present for all agents.\n- `\"document\"` — document-level results. Present only when the agent has an active\n  `archastro/knowledge` installation.\n\nResults from both kinds are scored with Reciprocal Rank Fusion (RRF), normalized to\nbe comparable across kinds, then merged into a single ranked list. On a relevance tie,\nchunks appear before documents. The total number of results is capped at `max_results`\nacross both kinds.\n\nUse `mode` to choose the retrieval strategy: `\"hybrid\"` (default) combines vector and\nfull-text search; `\"vector\"` and `\"fulltext\"` select each strategy independently.","operationId":"post_api_v1_agents__agent_search","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent whose knowledge base to search.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"max_results":1,"mode":"string","query":"string","recency_days":1,"source_types":["string"]},"properties":{"max_results":{"description":"Maximum total results to return across all kinds. Chunks and documents are ranked together and the list is capped at this value. Defaults to `20`; maximum is `100`.","example":1,"type":"integer"},"mode":{"description":"Retrieval strategy. One of `\"hybrid\"` (default), `\"vector\"`, or `\"fulltext\"`.","example":"string","type":"string"},"query":{"description":"Natural-language search query used to retrieve relevant knowledge items.","example":"string","type":"string"},"recency_days":{"description":"When set, restricts results to items indexed within the last N days.","example":1,"type":"integer"},"source_types":{"description":"Array of source-type slugs used to filter chunk results, e.g. `[\"web\", \"file\"]`. Omit to include all source types.","example":["string"],"items":{"type":"string"},"type":"array"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"description":"Knowledge search results for the specified agent.","example":{"data":[]},"properties":{"data":{"description":"Ranked list of matching knowledge items. Each item is a `kind`-discriminated union — either `\"chunk\"` (always present) or `\"document\"` (present only when the agent has an active `archastro/knowledge` installation). Sorted by relevance descending; capped at `max_results` total across both kinds.","example":[],"items":{"description":"A discriminated union representing a single result from a knowledge search. The `kind` field identifies the variant: `\"chunk\"` for a chunk-level result (see `KnowledgeSearchResult`) or `\"document\"` for a document-level result (see `DocumentSearchResult`).","discriminator":{"propertyName":"kind"},"oneOf":[{"description":"A single chunk returned by a knowledge search query. Represents an indexed content item matched against the search terms.","example":{"content":"ArchAstro connects your agents to external knowledge sources for real-time context retrieval.","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","id":"cim_0aBcDeFgHiJkLmNoPqRsTu","kind":"chunk","metadata":{"key":"value"},"raw_content":{},"type":"gmail"},"properties":{"content":{"description":"Normalized plain-text content of the matched chunk.","example":"ArchAstro connects your agents to external knowledge sources for real-time context retrieval.","type":"string"},"content_type":{"description":"MIME type of the content, e.g. `\"text/plain\"` or `\"text/html\"`.","example":"application/json","type":"string"},"created_at":{"description":"When this item was indexed into the knowledge base (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Context item ID (`cim_...`).","example":"cim_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"default":"chunk","description":"Result variant discriminator. Always `\"chunk\"` for this object type.","enum":["chunk"],"example":"chunk","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this item by the source connector.","example":{"key":"value"},"type":"object"},"raw_content":{"description":"Raw content payload as stored by the source connector, before normalization.","example":{},"type":"object"},"type":{"description":"Type identifier of the parent knowledge source (e.g. `\"gmail\"`, `\"github_activity\"`). Returns `\"unknown\"` when the source association is not loaded.","example":"gmail","type":"string"}},"required":["id","kind"],"type":"object"},{"description":"A single document-level result returned by a knowledge search query. Includes a short preview snippet and content statistics alongside the document's metadata.","example":{"id":"cdo_0aBcDeFgHiJkLmNoPqRsTu","kind":"document","metadata":{"key":"value"},"snippet":"This document describes the onboarding workflow for new users, including account setup, initial configuration steps, and a guided tour of the main features…","title":"Example Title","total_lines":42,"total_size":1024},"properties":{"id":{"description":"Document ID (`cdo_...`).","example":"cdo_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"default":"document","description":"Result variant discriminator. Always `\"document\"` for this schema; use this field to distinguish document results from other `KnowledgeResult` variants.","enum":["document"],"example":"document","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the document. `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"snippet":{"description":"Leading 300-character preview of the document's text content, trimmed of surrounding whitespace. Truncated with an ellipsis when the full content exceeds the limit.","example":"This document describes the onboarding workflow for new users, including account setup, initial configuration steps, and a guided tour of the main features…","type":"string"},"title":{"description":"Title of the document as stored in the knowledge base. `null` if the document has no title.","example":"Example Title","type":"string"},"total_lines":{"description":"Total number of lines in the document's text content. `0` for empty documents.","example":42,"type":"integer"},"total_size":{"description":"Total byte size of the document's text content encoded as UTF-8. `0` for empty documents.","example":1024,"type":"integer"}},"required":["id","kind"],"type":"object"}]},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Agent not found"},"422":{"description":"Invalid parameters"}},"summary":"Search an agent's knowledge base","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/threads":{"post":{"description":"Creates a new thread owned by the specified agent. The thread is scoped to the\nagent's identity and is immediately available for messaging.\n\nThe authenticated caller must have access to the agent's parent app. If your\nAPI key is scoped to a specific app, pass that app's ID via the `app` parameter.\nAttempting to create a thread for an agent you cannot access returns 404.\n\nBy default the platform may send an automatic welcome message into the new\nthread. Pass `skip_welcome_message: true` to suppress this behavior.","operationId":"post_api_v1_agents__agent_threads","parameters":[{"description":"Agent ID (`agt_...`). The thread will be owned by this agent.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"skip_welcome_message":true,"thread":{"description":"An example description.","is_unlisted":true,"key":"string","metadata":{"key":"value"},"muted":true,"org":"string","settings":{},"title":"Example Title"}},"properties":{"skip_welcome_message":{"description":"When `true`, suppresses the automatic welcome message that the platform sends when a new thread is created. Defaults to `false`.","example":true,"type":"boolean"},"thread":{"description":"Attributes for the new thread.","example":{"description":"An example description.","is_unlisted":true,"key":"string","metadata":{"key":"value"},"muted":true,"org":"string","settings":{},"title":"Example Title"},"properties":{"description":{"description":"Optional longer description of the thread's purpose.","example":"An example description.","type":"string"},"is_unlisted":{"description":"When `true`, the thread does not appear in standard thread lists. Defaults to `false`.","example":true,"type":"boolean"},"key":{"description":"Stable client-assigned key for the thread. Must be unique within the agent. Useful for idempotent creation — if a thread with this key already exists it is returned instead of creating a duplicate.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata you can attach to the thread. Values must be JSON-serializable.","example":{"key":"value"},"type":"object"},"muted":{"description":"When `true`, notifications for activity in this thread are suppressed. Defaults to `false`.","example":true,"type":"boolean"},"org":{"description":"Organization ID (`org_...`) to associate with the thread. Used to scope the thread to a specific organization when the agent operates across multiple orgs.","example":"string","type":"string"},"settings":{"description":"Thread-level settings map. Supports `agent_enabled` (boolean) to control whether the agent participates in this thread.","example":{},"type":"object"},"title":{"description":"Human-readable title for the thread. Displayed in thread lists and headers.","example":"Example Title","type":"string"}},"type":"object"}},"required":["thread"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Agent not found"},"422":{"description":"Validation failed"}},"summary":"Create a thread for an agent","x-auth":["bearer","publishable_key"]}},"/api/v1/agents/{agent}/upgrade":{"post":{"description":"Upgrades an existing agent by reconciling it against an AgentTemplate from a\nSolution. Supports two modes:\n\n- `\"reapply\"` (default) — re-applies the agent's currently tracked template,\n  picking up any changes the template author has made since the last apply.\n- `\"replace\"` — moves the agent to a different template. `template` is required\n  in this mode.\n\nSet `dry_run: true` to compute and return the full upgrade diff (adds, updates,\nremoves, noops) without writing any changes. The response includes a\n`review_fingerprint` you can pass back via `expected_review_fingerprint` on the\nlive apply to guard against the diff changing between review and execution.\n\nSafe overrides (`name`, `email`, `phone_number`, `metadata`, `identity`,\n`originator`, `model`) let you pin instance-specific values that should not be\noverwritten by the template during the upgrade.\n\nThe authenticated caller must own the agent or hold write permissions within its\nowning org or team. When called under a developer app scope, the caller must hold\nthe app scope for the target app.","operationId":"post_api_v1_agents__agent_upgrade","parameters":[{"description":"ID (`agi_...`) or `lookup_key` of the agent to upgrade.","example":"string","in":"path","name":"agent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"dry_run":true,"email":"user@example.com","expected_review_fingerprint":"string","identity":"string","metadata":{"key":"value"},"mode":"reapply","model":"string","name":"Example Name","originator":"string","phone_number":"+15555550123","template":"string"},"properties":{"dry_run":{"description":"When `true`, computes and returns the full upgrade diff without persisting any changes. Use with `expected_review_fingerprint` to guard the live apply.","example":true,"type":"boolean"},"email":{"description":"Instance-specific email address override. Pins this value so the template upgrade does not overwrite it.","example":"user@example.com","type":"string"},"expected_review_fingerprint":{"description":"Stale-review guard. Pass the `review_fingerprint` returned by a prior `dry_run` response to ensure the diff has not changed between review and live apply. Returns an error if the fingerprint no longer matches.","example":"string","type":"string"},"identity":{"description":"Instance-specific identity system-prompt override. Pins this value so the template upgrade does not overwrite it.","example":"string","type":"string"},"metadata":{"description":"Instance-specific metadata override. Pins this value so the template upgrade does not overwrite it.","example":{"key":"value"},"type":"object"},"mode":{"description":"Upgrade mode. `\"reapply\"` (default) refreshes the agent's tracked template; `\"replace\"` moves the agent to a different template (requires `template`).","enum":["reapply","replace"],"example":"reapply","type":"string"},"model":{"description":"Instance-specific default model override. Pins this value so the template upgrade does not overwrite it. Pass an empty string to clear the model.","example":"string","type":"string"},"name":{"description":"Instance-specific name override. Pins this value so the template upgrade does not overwrite it.","example":"Example Name","type":"string"},"originator":{"description":"Instance-specific originator label override. Pins this value so the template upgrade does not overwrite it.","example":"string","type":"string"},"phone_number":{"description":"Instance-specific phone number override in E.164 format. Pins this value so the template upgrade does not overwrite it.","example":"+15555550123","type":"string"},"template":{"description":"ID (`cfg_...`) or `lookup_key` of the target AgentTemplate config. Optional in `\"reapply\"` mode; required in `\"replace\"` mode.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpgradeResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"App-scoped token required. Use a token scoped to the target app.; Forbidden"},"404":{"description":"Agent not found; Template not found"},"409":{"description":"Agent template changed since review; prepare the diff again."},"422":{"description":"Agent has no tracked template; Template has no parent Solution; Config is not an agent template; Validation failed"}},"summary":"Upgrade an agent from an AgentTemplate","x-auth":["bearer","publishable_key"]}},"/api/v1/auth/allowed_auth_methods":{"get":{"description":"Returns the complete catalogue of authentication methods the platform supports,\nincluding each method's stable slug, user-facing name, and description.\n\nUse this endpoint to render method labels in sign-in UIs or org settings screens\nwithout hardcoding copy or maintaining your own enum list. Results reflect the\nplatform's source-of-truth catalogue and are consistent across all orgs.\n\nThis endpoint requires only a publishable key and is accessible without an active\nuser session, making it suitable for pre-authentication flows such as login page\nrendering or onboarding configuration.","operationId":"get_api_v1_auth_allowed_auth_methods","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Catalogue of all authentication methods the platform supports.","example":{"data":[{"description":"An example description.","name":"Example Name","slug":"example-slug"}]},"properties":{"data":{"description":"Ordered array of supported auth method objects, each with a stable slug, display name, and description.","example":[{"description":"An example description.","name":"Example Name","slug":"example-slug"}],"items":{"description":"A single authentication method supported by the platform, including its stable identifier and user-facing copy.","example":{"description":"An example description.","name":"Example Name","slug":"example-slug"},"properties":{"description":{"description":"One-sentence user-facing explanation of how this auth method works, suitable for display in an auth selection UI.","example":"An example description.","type":"string"},"name":{"description":"Short user-facing label suitable for buttons or list items, e.g. `\"Password\"` or `\"Magic Link\"`.","example":"Example Name","type":"string"},"slug":{"description":"Stable machine-readable identifier for this auth method, e.g. `\"password\"` or `\"magic_link\"`. Use this value when enabling or referencing auth methods programmatically.","example":"example-slug","type":"string"}},"required":["description","name","slug"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"}},"summary":"List supported auth methods","tags":["auth"],"x-auth":["publishable_key"]}},"/api/v1/auth/login":{"post":{"description":"Authenticates a user with an email address and password and returns a short-lived\naccess token, a refresh token, and the authenticated user object. Use the refresh\ntoken with the `/auth/refresh` endpoint to obtain new access tokens without\nre-authenticating.\n\nPassword login must be enabled for the app; apps that have disabled password\nauthentication return HTTP 403. Requests are rate-limited per IP (10 per minute)\nand per email-IP pair (5 per minute) — exceeding either limit returns HTTP 429.","operationId":"post_api_v1_auth_login","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"email":"user@example.com","password":"string"},"properties":{"email":{"description":"Email address of the user to authenticate.","example":"user@example.com","type":"string"},"password":{"description":"Password for the account associated with the given email.","example":"string","type":"string"}},"required":["email","password"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}},"description":"Successful response"},"401":{"description":"Invalid credentials"},"403":{"description":"Password login is not enabled for this organization"},"429":{"description":"Rate limited"}},"summary":"Authenticate with email and password","tags":["auth"],"x-auth":["publishable_key"]}},"/api/v1/auth/login/link":{"post":{"description":"Sends a magic link to the given email address so an existing user can sign in\nwithout a password. The user clicks the link in their email and is redirected to\n`redirect_uri` with a token; pass that token to `/auth/verify_link` to obtain\nsession tokens.\n\nIf no account exists for the email, the endpoint still returns success to prevent\nemail enumeration — no link is sent in that case. Both `email` and `redirect_uri`\nare required. Requests are rate-limited per IP (10 per minute) and per email-IP pair\n(3 per minute) — exceeding either limit returns HTTP 429. Returns HTTP 204 on success.","operationId":"post_api_v1_auth_login_link","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"email":"user@example.com","redirect_uri":"https://example.com"},"properties":{"email":{"description":"Email address of the account to send the magic link to.","example":"user@example.com","type":"string"},"redirect_uri":{"description":"URL the user is redirected to after clicking the magic link. The token is appended as a query parameter.","example":"https://example.com","type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"description":"Missing email or redirect_uri"},"429":{"description":"Rate limited"}},"summary":"Request a magic link for login","tags":["auth"],"x-auth":["publishable_key"],"x-sdk-name":"request_login_magic_link"}},"/api/v1/auth/refresh":{"post":{"description":"Exchanges a valid refresh token for a new access token and a new refresh token,\nrotating the refresh token on every call. The response also includes the updated\nuser object. Store the new refresh token and discard the old one.\n\nRefresh tokens are single-use — submitting an already-consumed token returns HTTP 401.\nRate limiting is applied per (user, IP) pair when the token can be verified, and\nfalls back to IP-only when it cannot. The limit is 30 exchanges per minute per\nbucket; exceeding it returns HTTP 429.","operationId":"post_api_v1_auth_refresh","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"refresh_token":"string"},"properties":{"refresh_token":{"description":"Refresh token previously issued by a login, registration, or token-refresh response.","example":"string","type":"string"}},"required":["refresh_token"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}},"description":"Successful response"},"401":{"description":"Invalid or expired refresh token"},"429":{"description":"Rate limited"}},"summary":"Refresh an access token","tags":["auth"],"x-auth":["publishable_key"]}},"/api/v1/auth/register":{"post":{"description":"Creates a new user account and returns an access token, refresh token, and the new\nuser object. Two registration paths are supported:\n\n- **Team registration**: supply `team_invite` with a valid team invite ID. The new\n  user is added to that team immediately upon registration. Returns HTTP 404 if the\n  invite is not found.\n- **Standard registration**: supply `password`. An `invite_code` may optionally be\n  included for invite-gated apps; an invalid code returns HTTP 404.\n\nExactly one of `team_invite` or `password` must be provided; omitting both returns\nHTTP 400. Password registration must be enabled for the app; disabled apps return\nHTTP 403. The response status is HTTP 201 on success.","operationId":"post_api_v1_auth_register","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"alias":"string","email":"user@example.com","full_name":"Example Name","invite_code":"string","password":"string","team_invite":"string","timezone":"America/New_York"},"properties":{"alias":{"description":"Display alias (handle) for the new account.","example":"string","type":"string"},"email":{"description":"Email address for the new account.","example":"user@example.com","type":"string"},"full_name":{"description":"Full name for the new account.","example":"Example Name","type":"string"},"invite_code":{"description":"Invite code for invite-gated registration. Applied only in the standard registration path.","example":"string","type":"string"},"password":{"description":"Password for the new account. Required for standard (non-team-invite) registration.","example":"string","type":"string"},"team_invite":{"description":"Team invite ID. When provided, the user is added to the team on registration.","example":"string","type":"string"},"timezone":{"description":"IANA timezone name for the new account, e.g. `\"America/New_York\"`.","example":"America/New_York","type":"string"}},"required":["email"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}},"description":"Successful response"},"400":{"description":"Missing required parameters"},"403":{"description":"Password registration is not enabled for this organization"},"404":{"description":"Team invite not found"},"422":{"description":"Validation failed"}},"summary":"Register a new user with email and password","tags":["auth"],"x-auth":["publishable_key"]}},"/api/v1/auth/register/link":{"post":{"description":"Starts a passwordless registration flow by sending a verification link to the given\nemail address. The recipient clicks the link and is redirected to `redirect_uri` with\na token; pass that token to `/auth/verify_link` to complete registration and obtain\nsession tokens.\n\nProfile fields (`full_name`, `alias`, `timezone`) are captured now and applied when\nthe link is verified. Requests are rate-limited per IP (10 per minute) and per\nemail-IP pair (3 per minute) — exceeding either limit returns HTTP 429. Returns\nHTTP 204 on success.","operationId":"post_api_v1_auth_register_link","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"alias":"string","email":"user@example.com","full_name":"Example Name","redirect_uri":"https://example.com","timezone":"America/New_York"},"properties":{"alias":{"description":"Display alias (handle) for the new account.","example":"string","type":"string"},"email":{"description":"Email address to send the registration magic link to.","example":"user@example.com","type":"string"},"full_name":{"description":"Full name for the new account.","example":"Example Name","type":"string"},"redirect_uri":{"description":"URL the user is redirected to after clicking the registration link. The token is appended as a query parameter.","example":"https://example.com","type":"string"},"timezone":{"description":"IANA timezone name for the new account, e.g. `\"America/New_York\"`.","example":"America/New_York","type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"description":"Missing email"},"422":{"description":"Validation failed"},"429":{"description":"Rate limited"}},"summary":"Request a magic link for registration","tags":["auth"],"x-auth":["publishable_key"],"x-sdk-name":"request_register_magic_link"}},"/api/v1/auth/request/link":{"post":{"description":"Sends a passwordless magic link to the given email address. If an account with that\nemail already exists, a login link is sent. If no account exists, a registration link\nis sent and the recipient completes sign-up by clicking through. This unified endpoint\nlets you implement a single email-entry UI that handles both cases transparently.\n\nThe `redirect_uri` is validated against the app's registered hosts; an unregistered\nURI returns HTTP 400. Both `email` and `redirect_uri` are required. Requests are\nrate-limited per IP (10 per minute) and per email-IP pair (3 per minute). Returns\nHTTP 204 on success — no body.","operationId":"post_api_v1_auth_request_link","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"email":"user@example.com","redirect_uri":"https://example.com"},"properties":{"email":{"description":"Email address to send the magic link to.","example":"user@example.com","type":"string"},"redirect_uri":{"description":"URL the user is redirected to after clicking the magic link. Must be registered with the app.","example":"https://example.com","type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"description":"Missing email or redirect_uri"},"422":{"description":"Validation failed"},"429":{"description":"Rate limited"}},"summary":"Request a magic link for login or registration","tags":["auth"],"x-auth":["publishable_key"],"x-sdk-name":"request_magic_link"}},"/api/v1/auth/token":{"post":{"description":"Consumes a single-use login token delivered via email and returns an access token,\nrefresh token, and the authenticated user object. One-time tokens are issued by the\npasswordless login flow and expire after a short window; submitting an expired or\nalready-used token returns HTTP 401.\n\nIf `timezone` is provided and the user's current timezone is still the default\n(`\"America/Los_Angeles\"`), the account timezone is updated in the same request.\nRequests are rate-limited to 10 per IP per minute; exceeding this returns HTTP 429.","operationId":"post_api_v1_auth_token","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"timezone":"America/New_York","token":"string"},"properties":{"timezone":{"description":"IANA timezone name to apply to the account if the account timezone is still the default, e.g. `\"Europe/London\"`. Omit to leave the timezone unchanged.","example":"America/New_York","type":"string"},"token":{"description":"Single-use login token extracted from the magic link or email code flow.","example":"string","type":"string"}},"required":["token"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}},"description":"Successful response"},"400":{"description":"Missing token"},"401":{"description":"Invalid or expired token"},"429":{"description":"Rate limited"},"500":{"description":"Token exchange failed"}},"summary":"Exchange a one-time login token for session tokens","tags":["auth"],"x-auth":["publishable_key"],"x-sdk-name":"exchange_login_token"}},"/api/v1/auth/verify/link":{"post":{"description":"Consumes a single-use token from a magic link URL and returns an access token,\nrefresh token, and the authenticated user object. This endpoint completes both the\nlogin flow (initiated by `/auth/request_login_link`) and the registration flow\n(initiated by `/auth/request_register_link` or `/auth/request_link`).\n\nExtract the token from the `token` query parameter of the magic link redirect URI\nand POST it here. Expired or already-used tokens return HTTP 401. If the app has\ndisabled passwordless authentication the request returns HTTP 403. Rate-limited to\n10 requests per IP per minute — exceeding this returns HTTP 429.","operationId":"post_api_v1_auth_verify_link","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"token":"string"},"properties":{"token":{"description":"Single-use magic link token extracted from the redirect URI query parameter.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokens"}}},"description":"Successful response"},"400":{"description":"Missing token"},"401":{"description":"Invalid or expired token"},"403":{"description":"Passwordless login is not enabled for this organization"},"429":{"description":"Rate limited"}},"summary":"Verify a magic link token","tags":["auth"],"x-auth":["publishable_key"],"x-sdk-name":"verify_magic_link"}},"/api/v1/files":{"post":{"description":"Creates a new file from base64-encoded content and returns the resulting file object,\nincluding a signed download URL. Use this endpoint to store images, documents, or\nother binary assets that can then be referenced by agents, teams, or users.\n\nApp scope is derived from the authenticated viewer's bearer token or publishable key.\nYou may optionally associate the file with an organization, team, user, or agent by\npassing the corresponding ID. If no owner is specified and the viewer is a user, the\nfile is automatically attributed to that user.\n\nReturns `422` when the `data` field is not valid base64 or the changeset is invalid.\nReturns `403` when the request lacks the required app scope.","operationId":"post_api_v1_files","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"agent":"string","content_type":"application/json","data":"string","filename":"string","org":"string","team":"string","user":"string"},"properties":{"agent":{"description":"Agent ID (`agi_...`) to associate with this file. When provided, the file's organization is derived from the agent.","example":"string","type":"string"},"content_type":{"description":"MIME type of the file, e.g. `\"image/png\"` or `\"application/pdf\"`.","example":"application/json","type":"string"},"data":{"description":"Base64-encoded binary content of the file to upload.","example":"string","type":"string"},"filename":{"description":"Original filename including extension, e.g. `\"avatar.png\"`.","example":"string","type":"string"},"org":{"description":"Organization ID (`org_...`) to associate with this file. Optional; defaults to the viewer's organization when omitted.","example":"string","type":"string"},"team":{"description":"Team ID (`tem_...`) that owns this file. Takes precedence over `user` when both are provided.","example":"string","type":"string"},"user":{"description":"User ID (`usr_...`) that owns this file. Defaults to the authenticated user when neither `user` nor `team` is specified.","example":"string","type":"string"}},"required":["content_type","data","filename"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageFile"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"422":{"description":"Validation failed or invalid base64"}},"summary":"Upload a file","x-auth":["bearer","publishable_key"]}},"/api/v1/files/{file}/avatar":{"get":{"description":"Returns the raw image bytes for an agent's profile picture identified by `file`.\nThis endpoint is designed for integration partners (such as Slack) that fetch\navatar URLs via plain GET requests without bearer token support. Authorization\nis performed via a short, stable capability `token` rather than an HTTP header.\n\nThe `token` is an HMAC-based capability tied to the file ID. It does not expire,\nbut it is invalidated when the agent's profile picture is replaced or the agent is\ndeleted — shared caches may continue serving the old image until the\n`Cache-Control` max-age of one hour elapses. The endpoint never redirects to\na signed storage URL; bytes are served inline so behavior is consistent across\nstorage backends.\n\nAll failure modes — invalid file ID, invalid token, file not currently referenced\nas an agent avatar — return a uniform `404` to avoid acting as an existence oracle.","operationId":"get_api_v1_files__file_avatar","parameters":[{"description":"File ID of the agent's profile picture (`fil_...`). Must be currently set as an agent's profile picture within the same app.","example":"string","in":"path","name":"file","required":true,"schema":{"type":"string"}},{"description":"HMAC capability token authorizing access to this specific file. Obtained from the avatar URL minted when the profile picture was set.","example":"string","in":"query","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"Raw image bytes of the agent avatar, served with the file's original content type."},"404":{"description":"Not found"}},"summary":"Fetch an agent avatar image"}},"/api/v1/slack_channel_bindings":{"get":{"description":"Returns a page of Slack channel bindings visible to the authenticated user.\nResults can be filtered by integration, team, agent, or organization. Omit all\nfilter params to retrieve every binding the caller can see.\n\nPagination is page-based. Pass `page` and `per_page` to navigate large result\nsets. `page` must be a positive integer; `per_page` must be between 1 and 100.\nInvalid values return 400.","operationId":"get_api_v1_slack_channel_bindings","parameters":[{"description":"Number of bindings to return per page. Defaults to 25; maximum is 100.","example":1,"in":"query","name":"per_page","required":false,"schema":{"type":"integer"}},{"description":"Page number to retrieve, 1-indexed. Defaults to 1. Must be a positive integer.","example":1,"in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"Return only bindings bound to one of these team IDs. Omit to return bindings for all teams.","example":["string"],"in":"query","name":"team","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Return only bindings that belong to one of these organization IDs. Omit to return bindings across all organizations visible to the caller.","example":["string"],"in":"query","name":"org","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Return only bindings that have at least one of these agent user IDs attached. Omit to return bindings regardless of agent attachment.","example":["string"],"in":"query","name":"agent","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Return only bindings whose Slack integration matches one of these integration IDs. Omit to return bindings across all integrations.","example":["string"],"in":"query","name":"integration","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelBindingListResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"summary":"List Slack channel bindings","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new binding between a Slack channel and a team, or updates the\nexisting binding if one already exists for the given channel. The caller also\nsupplies a list of agents to attach to the binding and enroll as members of the\ndestination team.\n\nThe caller must have team-manage rights on the destination team (and on the\ncurrently bound team if the channel is being re-pointed). Returns 403 if\npermission is insufficient. All write steps are idempotent, so retrying after\na partial failure is safe.\n\nOn success the REST endpoint returns 201 Created. The script binding\n(`slack.channel_bindings.upsert`) returns the full binding object including the\nattached agents.","operationId":"post_api_v1_slack_channel_bindings","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"agent_user_ids":["string"],"channel_id":"string","customer_label":"string","is_ext_shared_cached":true,"slack_team_id":"string","team_id":"string"},"properties":{"agent_user_ids":{"description":"List of agent user IDs to attach to the binding and enroll as members of the destination team. Pass an empty array to bind the channel without attaching any agents.","example":["string"],"items":{"type":"string"},"type":"array"},"channel_id":{"description":"Slack channel ID to bind (e.g. `C01234ABCDE`). Acts as the natural key of the binding within the workspace.","example":"string","type":"string"},"customer_label":{"description":"Human-readable label for the customer associated with this channel. Stored in the binding's config. `null` if omitted.","example":"string","type":"string"},"is_ext_shared_cached":{"description":"Cached value of Slack's `is_ext_shared` flag for the channel. When provided, this value is persisted on the binding to avoid repeated Slack API lookups. `null` if omitted.","example":true,"type":"boolean"},"slack_team_id":{"description":"Slack workspace team ID that the channel belongs to (e.g. `T01234ABCDE`). Identifies which Slack integration to use.","example":"string","type":"string"},"team_id":{"description":"ID of the team to bind the Slack channel to. The caller must have team-manage rights on this team.","example":"string","type":"string"}},"required":["agent_user_ids","channel_id","slack_team_id","team_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelBinding"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden; The Slack integration referenced by this binding is not visible to the caller"},"404":{"description":"Agent not found; Team not found"},"422":{"description":"Invalid parameters; Binding org_id does not match the integration's org_id"}},"summary":"Create or update a Slack channel binding","x-auth":["bearer","publishable_key"]}},"/api/v1/slack_channel_bindings/{channel}":{"delete":{"description":"Removes the binding between a Slack channel and its associated team. The\nchannel is identified by its Slack channel ID together with the `slack_team_id`\nthat scopes it to a specific Slack workspace. Removing the binding does not\ndelete the bound team or any conversation threads scoped to it; decommission\nthose resources separately if required.\n\nThe caller must have team-manage rights on the team the channel is currently\nbound to. Returning 403 indicates insufficient permission; returning 404\nindicates the binding does not exist or is not visible to the caller.\n\nThe REST endpoint returns 204 No Content on success. The script binding\n(`slack.channel_bindings.delete`) returns a confirmation object so script\ncallers can verify success without an additional fetch. Both paths are\nidempotent — retrying after a partial failure is safe.","operationId":"delete_api_v1_slack_channel_bindings__channel","parameters":[{"description":"Slack channel ID of the binding to delete (e.g. `C01234ABCDE`).","example":"string","in":"path","name":"channel","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Deletion confirmation returned by the script binding. The REST endpoint returns 204 No Content with no body.","example":{"channel":"string","deleted":true},"properties":{"channel":{"description":"Slack channel ID of the binding that was deleted.","example":"string","type":"string"},"deleted":{"description":"Always `true` when the binding was successfully removed.","example":true,"type":"boolean"}},"required":["channel","deleted"],"type":"object"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden; The Slack integration referenced by this binding is not visible to the caller"},"404":{"description":"Slack channel binding not found"},"422":{"description":"Invalid parameters"}},"summary":"Delete a Slack channel binding","x-auth":["bearer","publishable_key"]},"get":{"description":"Returns the Slack channel binding identified by a Slack channel ID and workspace\nteam ID pair. Use this endpoint to look up the team and agents currently bound\nto a specific Slack channel.\n\nThe `channel` path parameter is the Slack channel ID; `slack_team_id` identifies\nthe Slack workspace the channel belongs to, disambiguating channels with the same\nID across workspaces. Both parameters are required. Returns 404 if no binding\nexists for the given pair or the associated Slack integration is not visible to\nthe caller.","operationId":"get_api_v1_slack_channel_bindings__channel","parameters":[{"description":"Slack channel ID of the binding to retrieve (e.g. `C01234ABCDE`).","example":"string","in":"path","name":"channel","required":true,"schema":{"type":"string"}},{"description":"Slack workspace team ID that the channel belongs to (e.g. `T01234ABCDE`). Used together with `channel` to uniquely identify the binding.","example":"string","in":"query","name":"slack_team_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelBinding"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"The Slack integration referenced by this binding is not visible to the caller"},"404":{"description":"Slack channel binding not found"},"422":{"description":"Invalid parameters"}},"summary":"Retrieve a Slack channel binding","x-auth":["bearer","publishable_key"]}},"/api/v1/teams":{"get":{"description":"Returns a paginated list of teams visible to the authenticated user, ordered\nby creation time descending. Use `membership` to narrow results to teams the\ncaller has joined or teams they are eligible to join based on their ACL\nvisibility.\n\nSupports full-text search across team name and description via `search`, and\nstructured metadata filtering via `metadata`. When `app` is present, results\nare scoped to that app and the caller must hold the corresponding app scope.","operationId":"get_api_v1_teams","parameters":[{"description":"Filter teams by membership status. `\"joined\"` returns only teams the caller is a member of. `\"joinable\"` returns ACL-visible teams the caller has not yet joined. Omit to return all visible teams.","example":"string","in":"query","name":"membership","required":false,"schema":{"type":"string"}},{"description":"Full-text search string matched against team name and description.","example":"string","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Number of teams to return per page. Defaults to 25.","example":1,"in":"query","name":"page_size","required":false,"schema":{"type":"integer"}},{"description":"Page number to retrieve, starting at 1. Defaults to 1.","example":1,"in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"Structured metadata filter expression. Only teams whose metadata satisfies the expression are returned.","in":"query","name":"metadata","required":false,"schema":{"description":"A recursive boolean expression tree for filtering records by their JSON metadata field.\n\nEach node is either a group (`and`, `or`, `not`) with nested `clauses`, or a leaf\npredicate (`eq`, `contains`, `exists`) that targets a specific path inside the\nmetadata object. Leaf predicates use `path` (an array of key segments) to address\nnested values.\n\nOperator notes:\n- `eq` performs deep JSONB equality on the value at `path`.\n- `contains` checks whether the stored metadata structurally contains the given value;\n  this is the only operator backed by the GIN index and is preferred for performance.\n- `exists` checks whether `path` is present in the metadata object; a key whose value\n  is explicitly `null` still satisfies this predicate.\n- `and` and `or` accept two or more `clauses`; `not` accepts exactly one.\n\nThe legacy flat shape (`type: \"metadata\"`, `key`, `value`) is still accepted and is\ntreated as an `eq` predicate. Prefer the structured form for new integrations.","examples":[{"clauses":[{"clauses":[{"operator":"eq","path":["customer_tier"],"value":"enterprise"},{"operator":"exists","path":["collaborations","org_123"]}],"operator":"or"},{"operator":"eq","path":["type"],"value":"agent_network"}],"operator":"and"}],"properties":{"clause":{"description":"Single child expression node. Alternative to `clauses` when `operator` is `not`.","type":"object"},"clauses":{"description":"Array of child expression nodes. Required for `and` and `or` (two or more items) and `not` (exactly one item).","items":{"type":"object"},"type":"array"},"key":{"deprecated":true,"description":"Deprecated. Top-level metadata key; equivalent to a single-element `path`. Use `path` instead.","type":"string"},"operator":{"description":"The boolean group operator (`and`, `or`, `not`) or leaf predicate operator (`eq`, `contains`, `exists`) for this node.","enum":["and","contains","eq","exists","not","or"],"type":"string"},"path":{"description":"Ordered key segments addressing a nested location inside the metadata object, e.g. `[\"collaborations\", \"org_123\"]`.","items":{"type":"string"},"type":"array"},"type":{"deprecated":true,"description":"Deprecated. Legacy discriminator; `type: \"metadata\"` combined with `key`/`value` is treated as an `eq` predicate. Use `operator` instead.","type":"string"},"value":{"description":"The JSON value to compare against the node at `path`. Required for `eq` and `contains` predicates; omitted for `exists`."}},"type":"object"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Paginated list of teams matching the query.","example":{"data":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"}],"has_next":true,"has_prev":true,"page":1,"page_size":1,"total_entries":1,"total_pages":1},"properties":{"data":{"description":"Array of team objects for the current page.","example":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"}],"items":{"description":"A team within an organization, used to group users and agents and scope resources like configs, agents, and tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"properties":{"acl":{"description":"Access control list governing visibility and join permissions for this team. `null` when no ACL restrictions are applied and the team inherits default access rules.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the developer application this team belongs to (`dap_...`). `null` if the team is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"badges":{"description":"Aggregated badge counts for the team, keyed by category. `null` when badge data is not loaded.","example":{},"type":"object"},"created_at":{"description":"When this team was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Human-readable description of the team's purpose. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Team ID (`tem_...`).","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"membership_status":{"description":"The authenticated viewer's role on this team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`. `null` if the viewer is not a member.","example":"member","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this team. Returns an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the team.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this team belongs to (`org_...`). `null` if the team is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"ID of the developer sandbox this team is scoped to (`dsb_...`). `null` outside sandbox contexts.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"slug":{"description":"URL-safe slug for the team, derived from the team name. `null` if not set.","example":"example-slug","type":"string"},"updated_at":{"description":"When this team was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"has_next":{"description":"`true` if there is a subsequent page of results.","example":true,"type":"boolean"},"has_prev":{"description":"`true` if there is a preceding page of results.","example":true,"type":"boolean"},"page":{"description":"The current page number.","example":1,"type":"integer"},"page_size":{"description":"The number of results per page.","example":1,"type":"integer"},"total_entries":{"description":"Total number of teams matching the query across all pages.","example":1,"type":"integer"},"total_pages":{"description":"Total number of pages given the current `page_size`.","example":1,"type":"integer"}},"required":["data","has_next","has_prev","page","page_size","total_entries","total_pages"],"type":"object"}}},"description":"Successful response"},"400":{"description":"Bad request - invalid metadata filter"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"}},"summary":"List teams","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new team and returns the created team object. The authenticated\nuser becomes the team's owner.\n\nWhen `app` is supplied, the request is scoped to that app and the caller\nmust hold the corresponding app scope. Omit `org` unless you want the team\npinned to a specific organization. A default chat thread is provisioned for\nthe team automatically after creation.","operationId":"post_api_v1_teams","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"description":"An example description.","metadata":{"key":"value"},"name":"Example Name","org":"string"},"properties":{"acl":{"description":"Access control configuration for the team. Controls who can discover and join the team.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"description":{"description":"Optional human-readable description of the team's purpose.","example":"An example description.","type":"string"},"metadata":{"description":"Arbitrary key-value pairs you can attach to the team for your own use. Values must be strings.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name for the team.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) to associate the team with. Omit to create the team without an org affiliation.","example":"string","type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"422":{"description":"Validation failed"}},"summary":"Create a team","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/join_by_code":{"post":{"description":"Adds a principal to a team using a 12-character invite code. The invite\ncode can be supplied as either `join_code` or `invite_code`; both are\naccepted for backwards compatibility.\n\nFor user-authenticated requests, the currently authenticated user is added\nto the team. For server-to-server requests, you must supply either `agent`\n(to add an agent) or `user` (to add a specific user by ID). If the user\nis already a member of the team, the request succeeds without creating a\nduplicate membership.\n\nThis endpoint is rate-limited to 10 requests per minute per IP address to\nprevent invite-code enumeration.","operationId":"post_api_v1_teams_join_by_code","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"agent":"string","invite_code":"string","join_code":"string","user":"string"},"properties":{"agent":{"description":"Agent ID (`agent_...`) to add to the team. When provided, the agent is joined instead of the authenticated user. Requires a server-to-server session.","example":"string","type":"string"},"invite_code":{"description":"12-character invite code — alias for `join_code` accepted for backwards compatibility.","example":"string","type":"string"},"join_code":{"description":"12-character invite code that identifies the team. Mutually usable with `invite_code`.","example":"string","type":"string"},"user":{"description":"User ID (`user_...`) to add to the team. Required for server-to-server requests when `agent` is not supplied.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}},"description":"Successful response"},"400":{"description":"Invalid join code format"},"401":{"description":"Unauthorized"},"404":{"description":"Invalid or expired join code"},"429":{"description":"Too many requests"}},"summary":"Join a team with an invite code","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}":{"delete":{"description":"Permanently deletes the team identified by `team`. This action is\nirreversible — all team memberships, settings, and associated data are\nremoved.\n\nThe caller must be the team owner or an org admin. When `app` is present,\nthe caller must also hold the corresponding app scope.","operationId":"delete_api_v1_teams__team","parameters":[{"description":"Team ID (`team_...`) of the team to delete.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Team not found"}},"summary":"Delete a team","x-auth":["bearer","publishable_key"]},"get":{"description":"Returns the full team object for the given `team` ID, including its current\nmember list and all associated threads.\n\nThe authenticated user must be a member of the team or hold a role that\ngrants visibility (org admin, app scope). When `app` is supplied, the\ncaller must hold the corresponding app scope.","operationId":"get_api_v1_teams__team","parameters":[{"description":"Team ID (`team_...`) of the team to retrieve.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Team not found"}},"summary":"Retrieve a team","x-auth":["bearer","publishable_key"]},"patch":{"description":"Updates one or more attributes of the team identified by `team`. Only the\nfields you provide are changed; omitted fields are left as-is.\n\nTo replace the team's profile picture, supply the `profile_picture` object\nwith base64-encoded image data. The previous picture is deleted after the\nnew one is successfully uploaded. When `app` is present, the caller must hold\nthe corresponding app scope. The caller must be a team owner or org admin.","operationId":"patch_api_v1_teams__team","parameters":[{"description":"Team ID (`team_...`) of the team to update.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"description":"An example description.","metadata":{"key":"value"},"name":"Example Name","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"}},"properties":{"acl":{"description":"New access control configuration for the team. Replaces the existing ACL.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"description":{"description":"New human-readable description of the team's purpose.","example":"An example description.","type":"string"},"metadata":{"description":"Arbitrary key-value pairs to set on the team. Replaces the existing metadata map entirely.","example":{"key":"value"},"type":"object"},"name":{"description":"New display name for the team.","example":"Example Name","type":"string"},"profile_picture":{"description":"New profile picture for the team. Provide this object to upload and replace the current picture.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded binary image data.","example":"string","type":"string"},"filename":{"description":"Original filename of the image, used for storage metadata.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`.","example":"application/json","type":"string"}},"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - app scope required"},"404":{"description":"Team not found"},"422":{"description":"Validation failed"}},"summary":"Update a team","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/artifacts":{"get":{"description":"Returns all artifacts owned by the specified team. Artifacts represent\nAI-generated or user-uploaded files associated with agent sessions,\nthreads, or sandboxes — such as images, documents, and code outputs.\n\nThe authenticated user must be a member of the team. Attempting to list\nartifacts for a team the caller does not have access to returns 404\nrather than 403 to avoid leaking team existence.\n\nResults are returned in a single page without cursor pagination. Each\nartifact in the response reflects the state of its current version,\nincluding a short-lived signed `file_url` for direct download.","operationId":"get_api_v1_teams__team_artifacts","parameters":[{"description":"Team ID (`tea_...`). The authenticated user must be a member of this team.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"All artifacts owned by the team.","example":{"data":[{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}]},"properties":{"data":{"description":"Array of artifact objects belonging to the team.","example":[{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}],"items":{"description":"A versioned artifact produced or managed by an agent, such as a generated file, report, or code output.","example":{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1},"properties":{"agent":{"description":"ID of the agent that produced this artifact (`agt_...`). `null` if not agent-produced.","example":"agt_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content_type":{"description":"MIME type of the current version's file, e.g. `\"text/csv\"` or `\"image/png\"`. `null` if no file is attached.","example":"application/json","type":"string"},"created_at":{"description":"When the artifact was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"current_version":{"description":"ID of the current (latest published) artifact version (`artv_...`). `null` if no version has been published.","example":"afv_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"description":{"description":"Optional longer description of the artifact's contents or purpose. `null` if not set.","example":"An example description.","type":"string"},"file":{"description":"Storage file ID for the current version (`fil_...`). `null` if no file is attached.","example":"string","type":"string"},"file_name":{"description":"Original filename of the current version's file, e.g. `\"output.csv\"`. `null` if no file is attached.","example":"Example Name","type":"string"},"file_url":{"description":"Short-lived signed URL for downloading the current version's file. `null` if no file is attached.","example":"https://example.com","type":"string"},"id":{"description":"Artifact ID (`art_...`).","example":"art_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Image source metadata for rendering the current version's file inline. Present only when `content_type` starts with `\"image/\"`. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"name":{"description":"Human-readable name for the artifact, e.g. `\"Q2 Report\"`. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this artifact belongs to (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment associated with this artifact. `null` if not sandbox-scoped.","example":"string","type":"string"},"team":{"description":"ID of the team that owns this artifact (`tea_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread in which this artifact was created (`thr_...`). `null` if not thread-scoped.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the artifact record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who created this artifact (`usr_...`). `null` if not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version":{"description":"Current version number of the artifact. Increments each time a new version is published.","example":1,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found"}},"summary":"List a team's artifacts","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new artifact and stores its file content. A file payload is required;\nsupply it via the `artifact.file_content` (Base64-encoded), `artifact.file_name`,\nand `artifact.file_content_type` fields. The artifact is scoped to the owner\nresolved from the request context — either a team or a user.\n\nOptionally associate the artifact with an existing thread or agent by passing\n`artifact.thread_id` or `artifact.agent_id`. Returns 201 with the created\nartifact on success.","operationId":"post_api_v1_teams__team_artifacts","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"artifact":{}},"properties":{"artifact":{"description":"Object containing the attributes for the new artifact.","example":{},"type":"object"}},"required":["artifact"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Artifact"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"422":{"description":"Validation error"}},"summary":"Create an artifact","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/custom_objects":{"get":{"description":"Returns a paginated list of custom objects owned by the specified team,\nfiltered to a single schema type. Results are ordered by creation time\ndescending unless `query` is provided, in which case they are ordered by\nfull-text relevance score descending.\n\nUse `limit` and `offset` for page-based pagination. Use `row_key` or\n`sort_key` to narrow results to objects matching those index values.\nFull-text search via `query` operates only against the fields configured\nas `search_fields` on the schema.\n\nThe authenticated user must be a member of the team with sufficient\naccess. Returns 404 if the team is not found, the caller lacks access,\nor `type` does not match a registered schema for the team's organization.","operationId":"get_api_v1_teams__team_custom_objects","parameters":[{"description":"Filter results to objects whose `row_key` exactly matches this value.","example":"string","in":"query","name":"row_key","required":false,"schema":{"type":"string"}},{"description":"Filter results to objects whose `sort_key` exactly matches this value.","example":"string","in":"query","name":"sort_key","required":false,"schema":{"type":"string"}},{"description":"Full-text search string matched against the schema's configured `search_fields`. When provided, results are ordered by relevance score descending instead of creation time descending.","example":"string","in":"query","name":"query","required":false,"schema":{"type":"string"}},{"description":"Maximum number of objects to return per page.","example":1,"in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Number of objects to skip before returning results. Use with `limit` for page-based pagination.","example":1,"in":"query","name":"offset","required":false,"schema":{"type":"integer"}},{"description":"Schema type identifier (`lookup_key`) that filters results to objects of this schema.","example":"string","in":"query","name":"type","required":true,"schema":{"type":"string"}},{"description":"Team ID (`team_...`). Scopes results to objects owned by this team.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Paginated list of custom objects owned by the team.","example":{"data":[{"created_at":"2024-01-01T00:00:00Z","fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","row_key":"string","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","schema_type":"contact","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}],"meta":{}},"properties":{"data":{"description":"Array of custom object records for the current page.","example":[{"created_at":"2024-01-01T00:00:00Z","fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","row_key":"string","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","schema_type":"contact","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}],"items":{"description":"A custom object belonging to an organization. Custom objects store arbitrary structured data defined by a schema type and are scoped to an org, team, or user.","example":{"created_at":"2024-01-01T00:00:00Z","fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu","org":"org_0aBcDeFgHiJkLmNoPqRsTu","row_key":"string","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","schema_type":"contact","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1},"properties":{"created_at":{"description":"When the custom object was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"fields":{"description":"Map of field names to their current values as defined by the object's schema type.","example":{"key":"value"},"type":"object"},"id":{"description":"Unique identifier for the custom object (`cobj_...`).","example":"cobj_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org":{"description":"ID of the organization this object belongs to (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"row_key":{"description":"An optional stable key used to identify this object by a caller-controlled string rather than its generated ID. `null` if not set.","example":"string","type":"string"},"sandbox":{"description":"ID of the sandbox environment this object is scoped to (`dsb_...`). `null` for production objects.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"schema_type":{"description":"The lookup key of the schema type that defines this object's field structure. `null` if the schema type has not been set.","example":"contact","type":"string"},"team":{"description":"ID of the team that owns this object (`tem_...`). `null` if the object is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the custom object was last modified (ISO 8601). `null` if the object has never been updated after creation.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this object (`usr_...`). `null` if the object is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version":{"description":"Optimistic concurrency version of the object. Increments with each successful update; pass this value in write operations to detect conflicting changes.","example":1,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"meta":{"description":"Pagination metadata for the response.","example":{},"type":"object"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found or schema type not found"}},"summary":"List a team's custom objects","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new custom object owned by the specified team. The object is\ninstantiated against the schema identified by `type` (the schema's\n`lookup_key`). All field values are validated against that schema's\nfield definitions before the object is persisted.\n\nThe authenticated user must be a member of the team with sufficient\naccess. If the team is not found or the caller lacks access, the endpoint\nreturns 404. If `type` does not match a registered schema for the team's\norganization, the endpoint also returns 404.","operationId":"post_api_v1_teams__team_custom_objects","parameters":[{"description":"Team ID (`team_...`). The team that will own the created object.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"fields":{},"type":"string"},"properties":{"fields":{"description":"Map of field values to set on the new object. Keys and value types must conform to the schema identified by `type`.","example":{},"type":"object"},"type":{"description":"Schema type identifier (`lookup_key`) that defines the object's fields and validation rules.","example":"string","type":"string"}},"required":["fields","type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomObject"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found or schema type not found"},"422":{"description":"Validation error"}},"summary":"Create a team custom object","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/invite":{"post":{"description":"Generates a new invite code for the specified team. The authenticated user\nmust be a member of the team with the `owner` or `admin` role.\n\nThe returned code is a short alphanumeric string that other users can\npresent to join the team. Each call produces a new code; previously issued\ncodes are not invalidated by this request.","operationId":"post_api_v1_teams__team_invite","parameters":[{"description":"Team ID (`tm_...`) identifying the team for which to generate the invite code.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInvite"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Team not found"}},"summary":"Create a team invite","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/invites":{"post":{"description":"Generates a new invite code for the specified team using server-to-server\nauthentication. Unlike the user-facing create endpoint, this variant does not\nrequire the caller to be a team member — it is intended for privileged\nback-end services acting on behalf of your platform.\n\nThe returned code is a short alphanumeric string that users can present to\njoin the team. Each call produces a new code; previously issued codes are\nnot invalidated by this request.","operationId":"post_api_v1_teams__team_invites","parameters":[{"description":"Team ID (`tm_...`) identifying the team for which to generate the invite code.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"The newly created team invite containing the join code.","example":{"code":"string"},"properties":{"code":{"description":"Six-character alphanumeric join code. Present this value to the join-team endpoint to add a user to the team.","example":"string","type":"string"}},"required":["code"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found"}},"summary":"Create a team invite (server-to-server)","tags":["s2s"],"x-auth":["secret_key"]}},"/api/v1/teams/{team}/join":{"post":{"description":"Adds a principal to a team that is visible to the authenticated user.\n\nBy default, the currently authenticated user joins the team. Provide `agent`\nto add an agent to the team instead — the caller must already be a member of\nthe team to do so. Provide `user` (by ID) or `email` to add another user from\nyour organization — the caller must be a team owner, team admin, or org admin.\nOnly one of `agent`, `user`, or `email` may be supplied per request.\n\nIf the target principal is already a member of the team, the request succeeds\nwithout creating a duplicate membership. Server-to-server callers are not\npermitted to use this endpoint; use the invite-code endpoint instead.","operationId":"post_api_v1_teams__team_join","parameters":[{"description":"Team ID (`team_...`) to join.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"agent":"string","email":"user@example.com","user":"string"},"properties":{"agent":{"description":"Agent ID (`agent_...`) to add to the team. The caller must already be a member of the team.","example":"string","type":"string"},"email":{"description":"Email address of a member of the caller's organization to add to the team. Requires team-owner, team-admin, or org-admin role.","example":"user@example.com","type":"string"},"user":{"description":"User ID (`user_...`) of a member of the caller's organization to add to the team. Requires team-owner, team-admin, or org-admin role.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"}},"summary":"Join a team","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/leave":{"delete":{"description":"Removes a principal from a team. By default, the authenticated user removes\nthemselves from the team. Provide `agent` to remove an agent instead — the\ncaller must be a member of the team to do so.\n\nTeam owners cannot leave their own team. To transfer ownership first, use\nthe update-membership endpoint, then call this endpoint.\n\nFor server-to-server requests, `user` is required to identify which user\nshould be removed.","operationId":"delete_api_v1_teams__team_leave","parameters":[{"description":"Team ID (`team_...`) to leave.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not a member of this team"},"422":{"description":"Failed to leave team"}},"summary":"Leave a team","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/members":{"delete":{"description":"Removes a user, agent, or all members of an organization from the specified\nteam. Provide exactly one of `user`, `agent`, or `org` — supplying more than\none or none returns a 400 error. On success, returns 204 No Content.\n\nWhen `org` is provided, every user and agent membership belonging to that org\nis removed in a single call. The caller must be a member of the team's owning\norg to perform an org-scoped removal. You cannot target the team's owning org\nitself with this parameter.\n\nThe caller must have permission to manage the team. When `app` is present, the\nrequest is scoped to that app and requires a valid app-scoped token.","operationId":"delete_api_v1_teams__team_members","parameters":[{"description":"Team ID (`team_...`). The team to remove the member from.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"description":"Provide exactly one of user, agent, or org"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Team or member not found"}},"summary":"Remove a member or org from a team","x-auth":["bearer","publishable_key"]},"get":{"description":"Returns all members of the specified team, including both users and agents.\nMembers are returned in a single non-paginated array ordered by join time.\n\nBearer-authenticated users must be a member of the team to retrieve its\nmember list. Developer and server-to-server callers can retrieve members for\nany team visible to their app scope. When `app` is provided, the request is\nscoped to that app and requires a valid app-scoped token.","operationId":"get_api_v1_teams__team_members","parameters":[{"description":"Team ID (`team_...`). The team whose members you want to list.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Array of team memberships for the specified team.","example":{"data":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"created_at":"2024-01-01T00:00:00Z","id":"tmb_0aBcDeFgHiJkLmNoPqRsTu","joined_at":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"role":"member","team":{},"type":"user","updated_at":"2024-01-01T00:00:00Z","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}]},"properties":{"data":{"description":"Array of team membership objects, including both user and agent members.","example":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"created_at":"2024-01-01T00:00:00Z","id":"tmb_0aBcDeFgHiJkLmNoPqRsTu","joined_at":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"role":"member","team":{},"type":"user","updated_at":"2024-01-01T00:00:00Z","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"items":{"description":"A record representing a user's or agent's membership in a team, including their resolved identity details and role.","example":{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"created_at":"2024-01-01T00:00:00Z","id":"tmb_0aBcDeFgHiJkLmNoPqRsTu","joined_at":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"role":"member","team":{},"type":"user","updated_at":"2024-01-01T00:00:00Z","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"agent":{"description":"The agent associated with this membership, as an expanded agent object. `null` when the member is a user, the type is unknown, or the association is not preloaded.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"created_at":{"description":"When this membership record was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Team membership ID (`tmb_...`).","example":"tmb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"joined_at":{"description":"When the principal joined the team (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this membership record. `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the member, derived from the associated user or agent. `null` if the principal is unknown.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture of the member, derived from the associated user or agent. `null` if not set or principal is unknown.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"role":{"description":"The member's role within the team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`.","example":"member","type":"string"},"team":{"description":"The team this membership belongs to, as an expanded team object. `null` when the team association is not preloaded.","example":{},"type":"object"},"type":{"description":"Resolved principal type. One of `\"user\"`, `\"agent\"`, or `\"unknown\"` when the principal cannot be determined.","example":"user","type":"string"},"updated_at":{"description":"When this membership record was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"The user associated with this membership, as an expanded user object. `null` when the member is an agent, the type is unknown, or the association is not preloaded.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found"}},"summary":"List members of a team","x-auth":["bearer","publishable_key"]},"post":{"description":"Adds a user or agent as a member of the specified team and returns the new\nmembership with HTTP 201. Provide exactly one of `user` or `agent` — supplying\nboth or neither returns a 400 error.\n\nThe caller must have permission to manage the team. When an `app` is provided,\nthe request is scoped to that app and the caller must hold a valid app-scoped\ntoken. The default role is `\"member\"` when `role` is omitted.","operationId":"post_api_v1_teams__team_members","parameters":[{"description":"Team ID (`team_...`). The team to add the member to.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"agent":"string","role":"string","user":"string"},"properties":{"agent":{"description":"Agent ID (`agt_...`) to add as a member. Provide exactly one of `user` or `agent`.","example":"string","type":"string"},"role":{"description":"Role to assign. One of `\"owner\"`, `\"admin\"`, or `\"member\"`. Defaults to `\"member\"` when omitted.","example":"string","type":"string"},"user":{"description":"User ID (`usr_...`) to add as a member. Provide exactly one of `user` or `agent`.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMembership"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team or member not found"},"422":{"description":"Validation failed"}},"summary":"Add a member to a team","tags":["s2s"],"x-auth":["secret_key"]}},"/api/v1/teams/{team}/members/{user}":{"patch":{"description":"Changes the role of an existing user member on the specified team. Returns the\nupdated membership on success.\n\nOnly user memberships are supported by this endpoint. Attempting to update an\nagent membership returns 404. To change an agent's role, remove the existing\nmembership and re-add the agent with the desired role.\n\nThe caller must have permission to modify the team. You cannot change a member's\nrole across organization boundaries. Demoting the last owner of a team returns\n409. An invalid `role` value returns 422. When `app` is provided, the request\nis scoped to that app and requires a valid app-scoped token.","operationId":"patch_api_v1_teams__team_members__user","parameters":[{"description":"Team ID (`team_...`). The team whose member role you want to update.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}},{"description":"User ID (`usr_...`) of the existing member whose role should be changed.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"role":"string"},"properties":{"role":{"description":"New role to assign. One of `\"owner\"`, `\"admin\"`, or `\"member\"`.","example":"string","type":"string"}},"required":["role"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMembership"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — caller lacks permission to modify this team"},"404":{"description":"Team or member not found"},"409":{"description":"Conflict — cannot demote the last owner"},"422":{"description":"Validation failed (e.g. invalid role)"}},"summary":"Update a team member's role","x-auth":["bearer","publishable_key"]}},"/api/v1/teams/{team}/threads":{"get":{"description":"Returns all threads owned by the specified team that the authenticated caller\nhas permission to view. The caller must have access to the team; requests\nwithout team access are rejected with 404.\n\nThreads are returned in a single `data` array. Use the team-scoped thread\nendpoints to create, update, or delete individual threads.","operationId":"get_api_v1_teams__team_threads","parameters":[{"description":"Team ID (`tem_...`) whose threads should be listed.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Response envelope containing the team's threads.","example":{"data":[{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}]},"properties":{"data":{"description":"Array of thread objects belonging to the team.","example":[{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"A chat thread, representing a conversation channel that can be owned by a user, team, or agent and may contain messages, participants, and AI agent activity.","example":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent_user":{"description":"ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the thread was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"creator":{"description":"Expanded user object for the user who created this thread. Populated only when the association is loaded.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"description":{"description":"Optional description or purpose statement for the thread. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Thread ID (`thr_...`).","example":"string","type":"string"},"is_channel":{"description":"Whether this thread operates as a channel — a multi-member broadcast-style conversation.","example":true,"type":"boolean"},"is_default":{"description":"Whether this is the default thread for its owner. Each user or team has at most one default thread.","example":true,"type":"boolean"},"is_transient":{"description":"Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.","example":true,"type":"boolean"},"is_unlisted":{"description":"Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.","example":true,"type":"boolean"},"key":{"description":"Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.","example":"string","type":"string"},"last_activity":{"description":"When the last message or activity occurred in this thread. Present only when activity enrichment is requested.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"muted":{"description":"Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.","example":true,"type":"boolean"},"org":{"description":"ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_message":{"description":"The message that spawned this thread as a sub-thread. `null` for top-level threads.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"participant":{"description":"Array of participant user IDs (`usr_...`) who are members of this thread.","example":["string"],"items":{"type":"string"},"type":"array"},"participants":{"description":"Expanded participant user objects for each member of this thread. Populated only when the association is loaded.","example":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"items":{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"participating_actor":{"description":"Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.","example":["string"],"items":{"type":"string"},"type":"array"},"participating_agents":{"description":"Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.","example":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"role":{"description":"The authenticated user's membership role in this thread, e.g. `\"owner\"`, `\"member\"`, or `\"viewer\"`. `null` if the user is not a member.","example":"member","type":"string"},"sandbox":{"description":"ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.","example":"string","type":"string"},"settings":{"description":"Per-thread configuration settings controlling AI agent behavior for this thread.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"slug":{"description":"URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.","example":"example-slug","type":"string"},"sub_threads":{"description":"Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.","example":[{}],"items":{"type":"object"},"type":"array"},"team":{"description":"ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable name of the thread. `null` if no title has been set.","example":"Example Title","type":"string"},"ttl":{"description":"Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.","example":3600,"type":"integer"},"unread_count":{"description":"Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.","example":5,"type":"integer"},"updated_at":{"description":"When the thread was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found"}},"summary":"List threads for a team","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new thread owned by the specified team. The authenticated caller must\nhave access to the team; requests from callers without team access are rejected\nwith 404.\n\nIf a `profile_picture` is provided in the thread params, it must be\nbase64-encoded image data. The image is uploaded and associated with the thread\nbefore creation completes. Omit `profile_picture` to skip this step.\n\nBy default the platform sends an automatic welcome message into the new thread.\nPass `skip_welcome_message: true` to suppress this behavior, for example when\ncreating threads programmatically in bulk or seeding test data.","operationId":"post_api_v1_teams__team_threads","parameters":[{"description":"Team ID (`tem_...`) that will own the created thread.","example":"string","in":"path","name":"team","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"skip_welcome_message":true,"thread":{"create_legacy_agent":true,"description":"An example description.","is_unlisted":true,"key":"string","metadata":{"key":"value"},"muted":true,"org_id":"string","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"settings":{"agent_enabled":true},"title":"Example Title"}},"properties":{"skip_welcome_message":{"description":"When `true`, suppresses the automatic welcome message that is otherwise sent into the thread on creation. Defaults to `false`.","example":true,"type":"boolean"},"thread":{"description":"Attributes for the new thread. See ThreadCreateParams for available fields.","example":{"create_legacy_agent":true,"description":"An example description.","is_unlisted":true,"key":"string","metadata":{"key":"value"},"muted":true,"org_id":"string","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"settings":{"agent_enabled":true},"title":"Example Title"},"properties":{"create_legacy_agent":{"description":"When `true`, provisions a legacy chat agent alongside the thread. Only needed for integrations that depend on the pre-v2 agent model.","example":true,"type":"boolean"},"description":{"description":"Optional longer description of the thread's purpose. `null` if not provided.","example":"An example description.","type":"string"},"is_unlisted":{"description":"When `true`, the thread is hidden from the default thread list and accessible only by direct link or ID.","example":true,"type":"boolean"},"key":{"description":"Client-assigned unique key for idempotent creation or later lookup. Must be unique within the owning organization.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value pairs stored alongside the thread. Values must be strings or numbers.","example":{"key":"value"},"type":"object"},"muted":{"description":"When `true`, push and in-app notifications for this thread are suppressed for the creating user.","example":true,"type":"boolean"},"org_id":{"description":"ID of the organization to create the thread under. Defaults to the authenticated user's primary organization when omitted.","example":"string","type":"string"},"profile_picture":{"description":"Optional profile image for the thread, provided as a base64-encoded payload.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded image bytes.","example":"string","type":"string"},"filename":{"description":"Original filename of the uploaded image, used for display and content-type inference.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`.","example":"application/json","type":"string"}},"type":"object"},"settings":{"description":"Configuration overrides for the thread, such as AI model selection and context window settings.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"title":{"description":"Display name for the thread. `null` if omitted, which causes the thread to be untitled.","example":"Example Title","type":"string"}},"type":"object"}},"required":["thread"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"404":{"description":"Team not found"},"422":{"description":"Validation failed"}},"summary":"Create a thread for a team","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}":{"delete":{"description":"Permanently deletes a thread and all of its messages and artifacts. This action\ncannot be undone.\n\nThe authenticated user must own the thread or be an owner of the team the thread\nbelongs to. Attempting to delete a thread owned by another user or team returns 403.","operationId":"delete_api_v1_threads__thread","parameters":[{"description":"Thread ID (`thr_...`). The authenticated user must own this thread.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"Delete a thread","x-auth":["bearer","publishable_key"]},"get":{"description":"Returns the full thread record for the given thread ID. The authenticated user\nmust own the thread or be a member of the workspace it belongs to.\n\nUse this endpoint to fetch the current state of a single thread, including its\ntitle, description, and metadata. To list many threads, use the list endpoint\nwith cursor-based pagination.","operationId":"get_api_v1_threads__thread","parameters":[{"description":"Thread ID (`thr_...`). The authenticated user must have access to this thread.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"Retrieve a thread","x-auth":["bearer","publishable_key"]},"put":{"description":"Updates one or more mutable properties of the specified thread and returns\nthe full thread object with the applied changes. Only the fields you provide\nare modified; omitted fields retain their current values.\n\nIf `profile_picture` is supplied, the image is uploaded before the other\nfields are saved, after all ordinary thread fields have passed validation.\nSupplying invalid base64 picture data returns 422 and no other fields are\nupdated.\n\nVisibility can only widen: `private` may become `restricted` or `team`, and\n`restricted` may become `team`. The authenticated viewer must have\npermission to modify the thread.","operationId":"put_api_v1_threads__thread","parameters":[{"description":"Thread ID (`thr_...`). The authenticated user must have permission to update this thread.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"description":"An example description.","metadata":{"key":"value"},"muted":true,"profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"title":"Example Title","visibility":"private"},"properties":{"description":{"description":"Optional longer text describing the thread's purpose. Replaces the existing description when provided.","example":"An example description.","type":"string"},"metadata":{"description":"Arbitrary key-value metadata to store on the thread. Merged with or replaces existing metadata.","example":{"key":"value"},"type":"object"},"muted":{"description":"When `true`, suppresses notifications for new messages in this thread for the authenticated user.","example":true,"type":"boolean"},"profile_picture":{"description":"New profile picture for the thread. Provide all three inner fields to replace the existing image.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded image payload. Must be a valid base64 string.","example":"string","type":"string"},"filename":{"description":"Original filename of the image, e.g. `\"avatar.png\"`. Used for storage metadata.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/jpeg\"` or `\"image/png\"`.","example":"application/json","type":"string"}},"type":"object"},"title":{"description":"Human-readable display name for the thread. Replaces the existing title when provided.","example":"Example Title","type":"string"},"visibility":{"description":"Widen a team-owned thread: `private` may become `restricted` or `team`, and `restricted` may become `team`. Visibility cannot be narrowed.","enum":["private","restricted","team"],"example":"private","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}},"description":"The thread object after the update has been applied."},"400":{"description":"Invalid parameters"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"},"422":{"description":"Validation failed"}},"summary":"Update a thread","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/agents":{"get":{"description":"Returns the agents participating in the specified thread. Only personal user\nthreads (threads owned by a single user, not a team) expose agents through\nthis endpoint; requests for team threads return 404.\n\nThe authenticated user must have visibility into the thread. Each agent entry\nincludes display information such as name and profile picture. Thread-level\noverrides (e.g. a custom name or profile picture set for this thread) take\nprecedence over the agent's default values. When the caller is the thread\nowner, each entry also includes an `agent_config` object describing the\nagent's message policy and context configuration.","operationId":"get_api_v1_threads__thread_agents","parameters":[{"description":"Thread ID (`thr_...`). Must be a personal user thread visible to the authenticated user.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"The list of agents participating in the thread.","example":{"data":[{}]},"properties":{"data":{"description":"Array of agent objects for the thread. Each object includes `id`, `name`, `alias`, `profile_picture`, and `metadata`. Thread owners also receive an `agent_config` object with the agent's policy type and context configuration.","example":[{}],"items":{"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"List agents in a thread","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/artifacts":{"get":{"description":"Returns all artifacts produced during a thread's AI conversation. Artifacts are\nstructured outputs such as code files, documents, or generated assets created\nby the AI agent in response to messages in the thread.\n\nThe authenticated user must have access to the specified thread. Results are\nreturned in a single page; there is no cursor-based pagination for this endpoint.","operationId":"get_api_v1_threads__thread_artifacts","parameters":[{"description":"Thread ID (`thr_...`). Must be accessible to the authenticated user.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Artifact listing for the thread.","example":{"data":[{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}]},"properties":{"data":{"description":"Array of artifact objects produced during the thread's conversation.","example":[{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}],"items":{"description":"A versioned artifact produced or managed by an agent, such as a generated file, report, or code output.","example":{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1},"properties":{"agent":{"description":"ID of the agent that produced this artifact (`agt_...`). `null` if not agent-produced.","example":"agt_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content_type":{"description":"MIME type of the current version's file, e.g. `\"text/csv\"` or `\"image/png\"`. `null` if no file is attached.","example":"application/json","type":"string"},"created_at":{"description":"When the artifact was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"current_version":{"description":"ID of the current (latest published) artifact version (`artv_...`). `null` if no version has been published.","example":"afv_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"description":{"description":"Optional longer description of the artifact's contents or purpose. `null` if not set.","example":"An example description.","type":"string"},"file":{"description":"Storage file ID for the current version (`fil_...`). `null` if no file is attached.","example":"string","type":"string"},"file_name":{"description":"Original filename of the current version's file, e.g. `\"output.csv\"`. `null` if no file is attached.","example":"Example Name","type":"string"},"file_url":{"description":"Short-lived signed URL for downloading the current version's file. `null` if no file is attached.","example":"https://example.com","type":"string"},"id":{"description":"Artifact ID (`art_...`).","example":"art_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Image source metadata for rendering the current version's file inline. Present only when `content_type` starts with `\"image/\"`. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"name":{"description":"Human-readable name for the artifact, e.g. `\"Q2 Report\"`. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this artifact belongs to (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment associated with this artifact. `null` if not sandbox-scoped.","example":"string","type":"string"},"team":{"description":"ID of the team that owns this artifact (`tea_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread in which this artifact was created (`thr_...`). `null` if not thread-scoped.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the artifact record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who created this artifact (`usr_...`). `null` if not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version":{"description":"Current version number of the artifact. Increments each time a new version is published.","example":1,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"List artifacts for a thread","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/mark_read":{"post":{"description":"Records that a user has read up to a specific message in the thread. Unread\nindicators and badge counts are cleared up to the specified message.\n\nYou must supply exactly one of `last_read_message` or `use_latest_message`.\nOmitting both returns 400. If `use_latest_message` is `true` and the thread\nhas no messages, the request succeeds silently with no state change.\n\nFor server-to-server (S2S) requests where no user identity is present in the\ntoken, the `user` param is required to identify whose read state to update.","operationId":"post_api_v1_threads__thread_mark_read","parameters":[{"description":"Thread ID (`thr_...`). The thread to mark as read.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"last_read_message":"string","use_latest_message":true,"user":"string"},"properties":{"last_read_message":{"description":"Message ID (`msg_...`) to record as the last read message. Mutually exclusive with `use_latest_message`.","example":"string","type":"string"},"use_latest_message":{"description":"When `true`, marks the thread as read up to the latest message. Mutually exclusive with `last_read_message`.","example":true,"type":"boolean"},"user":{"description":"User ID (`usr_...`) whose read state to update. Required for S2S requests; ignored when an authenticated user is present in the token.","example":"string","type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"404":{"description":"Thread not found"},"422":{"description":"Validation error"}},"summary":"Mark a thread as read","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/members":{"delete":{"description":"Removes a user or agent membership from the specified thread. The authenticated\nuser must have access to the thread. A successful removal returns HTTP 204 with\nno response body.\n\nSupply either `user` or `agent` depending on the value of `type`. Returns 404\nif the thread or the membership record does not exist.","operationId":"delete_api_v1_threads__thread_members","parameters":[{"description":"Thread ID (`thr_...`) identifying the thread to remove the member from.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"404":{"description":"Thread or member not found"},"422":{"description":"Failed to remove member"}},"summary":"Remove a member from a thread","x-auth":["bearer","publishable_key"]},"get":{"description":"Returns all current members of the specified thread, including both user and\nagent members. The authenticated user must have visibility into the thread;\nrequests from users without access return 403.\n\nResults are returned as a flat array in the `data` field. The list is not\npaginated — all members are returned in a single response.","operationId":"get_api_v1_threads__thread_members","parameters":[{"description":"Thread ID (`thr_...`) whose members should be returned.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Object containing the thread's membership list.","example":{"data":[{"membership_type":"member","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}]},"properties":{"data":{"description":"Array of thread member objects representing all current members of the thread.","example":[{"membership_type":"member","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"items":{"description":"A user's membership record in a thread, capturing their role and full user profile.","example":{"membership_type":"member","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"membership_type":{"description":"Role of the member within the thread. One of `\"owner\"` (the user who created or was granted ownership) or `\"member\"` (a regular participant).","example":"member","type":"string"},"thread":{"description":"ID of the thread this membership belongs to (`thr_...`).","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"user":{"description":"Full user object for the member (`usr_...`). Present when the association is preloaded; `null` otherwise.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"}},"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"List members of a thread","x-auth":["bearer","publishable_key"]},"post":{"description":"Adds a user or agent to the explicit roster of a private or restricted\nthread. Team-visible threads use the owning team's implicit roster and reject\nexplicit additions. On restricted threads, a team member may add themself;\nadding anyone else requires permission to modify the thread.\n\nSupply either `user` or `agent` depending on the value of `type`. Targets\nmust be visible to the caller and, for an ordinary team-owned thread, must\nbelong to the owning team. On success the membership record is returned with\nHTTP 201; repeated agent additions are idempotent.","operationId":"post_api_v1_threads__thread_members","parameters":[{"description":"Thread ID (`thr_...`) identifying the thread to add the member to.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"agent":"string","membership_type":"string","type":"string","user":"string"},"properties":{"agent":{"description":"Agent ID of the principal to add. Required when `type` is `\"agent\"`.","example":"string","type":"string"},"membership_type":{"description":"Role granted to the new member. One of `\"owner\"` or `\"member\"`. Defaults to `\"member\"`.","example":"string","type":"string"},"type":{"description":"Kind of principal being added. Must be `\"user\"` or `\"agent\"`.","example":"string","type":"string"},"user":{"description":"User ID of the principal to add. Required when `type` is `\"user\"`.","example":"string","type":"string"}},"required":["type"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMember"}}},"description":"The user or agent membership that was added to the thread."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - not allowed to add members to this thread"},"404":{"description":"Thread not found"},"422":{"description":"Failed to add member"}},"summary":"Add a member to a thread","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/messages":{"get":{"description":"Returns a cursor-paginated list of messages belonging to the specified thread,\nordered from oldest to newest. Supply `before_cursor` or `after_cursor` (not both)\nto page through the result set; omit both to receive the most recent page.\n\nThe authenticated user must have access to the thread's owner (workspace or user).\nA 403 is returned if the thread exists but is not accessible to the caller; a 404\nis returned if the thread does not exist or is not visible to the authenticated user.\n\nPass `include_reply_counts: true` to annotate each message with the number of\nthreaded replies it has received. This adds a small amount of latency and should\nbe omitted when reply counts are not needed.","operationId":"get_api_v1_threads__thread_messages","parameters":[{"description":"Maximum number of messages to return per page. Defaults to 20.","example":1,"in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Opaque cursor returned in a previous response's `after_cursor` field. When provided, returns the page of messages immediately after that position. Cannot be combined with `before_cursor`.","example":"string","in":"query","name":"after_cursor","required":false,"schema":{"type":"string"}},{"description":"Opaque cursor returned in a previous response's `before_cursor` field. When provided, returns the page of messages immediately before that position. Cannot be combined with `after_cursor`.","example":"string","in":"query","name":"before_cursor","required":false,"schema":{"type":"string"}},{"description":"Thread ID (`thr_...`). The authenticated user must have access to this thread.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}},{"description":"When `true`, each message in the response is annotated with its threaded reply count. Defaults to `false`. Adds latency; omit when reply counts are not needed.","example":true,"in":"query","name":"include_reply_counts","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Paginated list of messages for the requested thread.","example":{"data":{"after_cursor":"string","before_cursor":"string","messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}]}},"properties":{"data":{"description":"Pagination envelope containing the messages for this page along with cursors for adjacent pages.","example":{"after_cursor":"string","before_cursor":"string","messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}]},"properties":{"after_cursor":{"description":"Opaque cursor to pass as `after` to retrieve the page of messages newer than this result set. `null` when there are no later messages.","example":"string","type":"string"},"before_cursor":{"description":"Opaque cursor to pass as `before` to retrieve the page of messages older than this result set. `null` when there are no earlier messages.","example":"string","type":"string"},"messages":{"description":"Ordered array of message objects for this page of results.","example":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"items":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["messages"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"List messages in a thread","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/picture":{"put":{"description":"Uploads a new profile picture for the specified thread and returns the updated\nthread object. The image must be supplied as a base64-encoded string with its\nMIME type.\n\nThe authenticated user must own the thread or be a team owner of the workspace\nthe thread belongs to. Supplying invalid base64 data returns 422.","operationId":"put_api_v1_threads__thread_picture","parameters":[{"description":"Thread ID (`thr_...`). The authenticated user must have permission to update this thread.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"picture":{"data":"string","filename":"avatar.png","mime_type":"application/json"}},"properties":{"picture":{"description":"Profile picture payload. Must include the base64-encoded image data and its MIME type.","example":{"data":"string","filename":"avatar.png","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded binary content of the image file.","example":"string","type":"string"},"filename":{"description":"Original filename of the image, e.g. `\"avatar.png\"`. Used for storage and display.","example":"avatar.png","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/jpeg\"` or `\"image/png\"`.","example":"application/json","type":"string"}},"required":["data","filename","mime_type"],"type":"object"}},"required":["picture"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"},"422":{"description":"Invalid base64 data"}},"summary":"Update a thread's profile picture","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/read_status":{"get":{"description":"Returns the read status of a thread for the specified user, including the ID\nof the last message they have read and the number of unread messages remaining.\n\nFor user-authenticated requests, the status is always returned for the\nauthenticated user and the `user` parameter is ignored. For server-to-server\n(S2S) requests, the `user` parameter is required and must be a valid user ID.\n\nReturns 404 if the thread does not exist or the caller does not have access\nto it.","operationId":"get_api_v1_threads__thread_read_status","parameters":[{"description":"Thread ID (`thr_...`). Must be accessible to the authenticated user or, for S2S requests, to the specified user.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}},{"description":"User ID (`usr_...`) whose read status to retrieve. Required for S2S requests; ignored for user-authenticated requests, which always return the status for the authenticated user.","example":"string","in":"query","name":"user","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadReadStatus"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"Retrieve a thread's read status","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/search":{"get":{"description":"Performs a full-text search over context items (messages, files, and other\nindexed sources) attached to the specified thread. Returns tagged objects\nwhose content matches the query string.\n\nUse the `type` param to restrict results to a particular context source. All\naccessible context source types are searched when `type` is omitted. The\nauthenticated user must have access to the thread.","operationId":"get_api_v1_threads__thread_search","parameters":[{"description":"Context source type to restrict the search to, e.g. `\"thread/messages\"`. Omit to search across all context sources for the thread.","example":"string","in":"query","name":"type","required":false,"schema":{"type":"string"}},{"description":"Full-text search query. Results are ranked by relevance to this string.","example":"string","in":"query","name":"q","required":true,"schema":{"type":"string"}},{"description":"Thread ID (`thr_...`). Must be accessible to the authenticated user.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Search results for the query.","example":{"data":[{}]},"properties":{"data":{"description":"Array of matching context items. Each item is a tagged object whose shape depends on the source type.","example":[{}],"items":{"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"Search context items within a thread","x-auth":["bearer","publishable_key"]}},"/api/v1/threads/{thread}/settings":{"get":{"description":"Returns the current settings for the specified thread. Settings control\nper-thread behavior such as whether the AI agent is enabled.\n\nThe authenticated user must own the thread or be a member of its workspace.\nIf settings have never been explicitly configured, defaults are returned\n(for example, `agent_enabled` defaults to `true`).","operationId":"get_api_v1_threads__thread_settings","parameters":[{"description":"Thread ID (`thr_...`). Must belong to the authenticated user's workspace.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"The settings for the requested thread.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. Defaults to `true` when no settings have been explicitly set.","example":true,"type":"boolean"}},"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"}},"summary":"Retrieve thread settings","x-auth":["bearer","publishable_key"]},"put":{"description":"Updates the settings for the specified thread. Only fields included in\nthe `settings` map are modified; omitted fields retain their current values.\n\nThe authenticated user must own the thread or be a member of its workspace.\nReturns the full settings object reflecting the state after the update.\nValidation errors are returned as `422 Unprocessable Entity`.","operationId":"put_api_v1_threads__thread_settings","parameters":[{"description":"Thread ID (`thr_...`). Must belong to the authenticated user's workspace.","example":"string","in":"path","name":"thread","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"settings":{}},"properties":{"settings":{"description":"Map of settings fields to update. Include only the keys you want to change.","example":{},"type":"object"}},"required":["settings"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadSettings"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"},"422":{"description":"Validation error"}},"summary":"Update thread settings","x-auth":["bearer","publishable_key"]}},"/api/v1/users/me":{"get":{"description":"Returns the user associated with the authenticated session or bearer\ntoken. This is the canonical way to resolve \"who am I?\" after\nauthentication.\n\nThe response includes the user's profile, notification settings, and\nprofile picture, along with the app, organization, and sandbox the\ntoken is scoped to and their display names — enough to establish full\nsession context in a single call. Unauthenticated requests return 401.","operationId":"get_api_v1_users_me","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"Successful response"},"401":{"description":"Unauthorized"}},"summary":"Retrieve the current user","x-auth":["bearer","publishable_key"]}},"/api/v1/users/{user}":{"get":{"description":"Returns the user identified by `user`. The authenticated user must share\nat least one team with the target user; requests for users outside any\nshared team are rejected with 403.\n\nA user may always retrieve their own profile with this endpoint. Use the\n`GET /users/me` endpoint as a convenience alias for retrieving the\nauthenticated user without specifying an ID.","operationId":"get_api_v1_users__user","parameters":[{"description":"User ID (`usr_...`) of the user to retrieve.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"summary":"Retrieve a user by ID","x-auth":["bearer","publishable_key"]}},"/api/v1/users/{user}/artifacts":{"get":{"description":"Returns all artifacts owned by the specified user. Artifacts represent\nAI-generated or user-uploaded files associated with agent sessions,\nthreads, or sandboxes — such as images, documents, and code outputs.\n\nThe authenticated user must be requesting their own artifacts or must\nhave administrative access. Attempting to list artifacts for a user\nthe caller is not authorized to access returns 403.\n\nResults are returned in a single page without cursor pagination. Each\nartifact in the response reflects the state of its current version,\nincluding a short-lived signed `file_url` for direct download.","operationId":"get_api_v1_users__user_artifacts","parameters":[{"description":"User ID (`usr_...`). The authenticated user must be this user or have access to their artifacts.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"All artifacts owned by the user.","example":{"data":[{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}]},"properties":{"data":{"description":"Array of artifact objects belonging to the user.","example":[{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1}],"items":{"description":"A versioned artifact produced or managed by an agent, such as a generated file, report, or code output.","example":{"agent":"agt_0aBcDeFgHiJkLmNoPqRsTu","content_type":"application/json","created_at":"2024-01-01T00:00:00Z","current_version":"afv_0aBcDeFgHiJkLmNoPqRsTu","description":"An example description.","file":"string","file_name":"Example Name","file_url":"https://example.com","id":"art_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu","version":1},"properties":{"agent":{"description":"ID of the agent that produced this artifact (`agt_...`). `null` if not agent-produced.","example":"agt_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content_type":{"description":"MIME type of the current version's file, e.g. `\"text/csv\"` or `\"image/png\"`. `null` if no file is attached.","example":"application/json","type":"string"},"created_at":{"description":"When the artifact was first created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"current_version":{"description":"ID of the current (latest published) artifact version (`artv_...`). `null` if no version has been published.","example":"afv_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"description":{"description":"Optional longer description of the artifact's contents or purpose. `null` if not set.","example":"An example description.","type":"string"},"file":{"description":"Storage file ID for the current version (`fil_...`). `null` if no file is attached.","example":"string","type":"string"},"file_name":{"description":"Original filename of the current version's file, e.g. `\"output.csv\"`. `null` if no file is attached.","example":"Example Name","type":"string"},"file_url":{"description":"Short-lived signed URL for downloading the current version's file. `null` if no file is attached.","example":"https://example.com","type":"string"},"id":{"description":"Artifact ID (`art_...`).","example":"art_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Image source metadata for rendering the current version's file inline. Present only when `content_type` starts with `\"image/\"`. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"name":{"description":"Human-readable name for the artifact, e.g. `\"Q2 Report\"`. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this artifact belongs to (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment associated with this artifact. `null` if not sandbox-scoped.","example":"string","type":"string"},"team":{"description":"ID of the team that owns this artifact (`tea_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread in which this artifact was created (`thr_...`). `null` if not thread-scoped.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the artifact record was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who created this artifact (`usr_...`). `null` if not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"version":{"description":"Current version number of the artifact. Increments each time a new version is published.","example":1,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"summary":"List a user's artifacts","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new artifact and stores its file content. A file payload is required;\nsupply it via the `artifact.file_content` (Base64-encoded), `artifact.file_name`,\nand `artifact.file_content_type` fields. The artifact is scoped to the owner\nresolved from the request context — either a team or a user.\n\nOptionally associate the artifact with an existing thread or agent by passing\n`artifact.thread_id` or `artifact.agent_id`. Returns 201 with the created\nartifact on success.","operationId":"post_api_v1_users__user_artifacts","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"artifact":{}},"properties":{"artifact":{"description":"Object containing the attributes for the new artifact.","example":{},"type":"object"}},"required":["artifact"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Artifact"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"422":{"description":"Validation error"}},"summary":"Create an artifact","x-auth":["bearer","publishable_key"]}},"/api/v1/users/{user}/invites":{"post":{"description":"Creates a new invite for the authenticated user. The invite can optionally be\nscoped to a specific thread, a persona, or carry arbitrary metadata. The\ncaller receives the new invite object at HTTP 201.\n\nThe invite key is always generated server-side (192-bit URL-safe random\nstring) and cannot be supplied by the caller.\n\nThe path `:user` must match the authenticated user. If a `thread_id` is\nprovided, the authenticated user must have permission to invite others to that\nthread; team threads are not supported and return an error. Supplying a\n`thread_id` that does not exist or that belongs to a different user returns\nan error. If a key collision occurs during creation the call returns a 409\nconflict — simply retry to generate a new key.","operationId":"post_api_v1_users__user_invites","parameters":[{"description":"User ID (`usr_...`). Must match the authenticated user.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"invite":{"metadata":{"key":"value"},"persona_id":"string","thread_id":"string"}},"properties":{"invite":{"description":"Parameters for the new invite. See the UserInviteCreateParams schema for field details.","example":{"metadata":{"key":"value"},"persona_id":"string","thread_id":"string"},"properties":{"metadata":{"description":"Arbitrary key-value metadata to attach to the invite. Returned as-is on the resulting invite object.","example":{"key":"value"},"type":"object"},"persona_id":{"description":"ID of the persona to associate with this invite (`per_...`). `null` if the invite is not bound to a persona.","example":"string","type":"string"},"thread_id":{"description":"ID of the thread to associate with this invite (`thr_...`). `null` if the invite is not bound to a thread.","example":"string","type":"string"}},"type":"object"}},"required":["invite"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInvite"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Thread not found"},"409":{"description":"Resource already exists"},"422":{"description":"Validation failed; Invites cannot be created for team threads; Invalid thread id; User context is required"}},"summary":"Create a user invite","x-auth":["bearer","publishable_key"]}},"/api/v1/users/{user}/orgs":{"get":{"description":"Returns the organizations the specified user belongs to. A user can belong\nto at most one organization, so the `data` array contains either zero or one\nitems.\n\nThe authenticated viewer must have permission to inspect the target user.\nReturns an empty `data` array when the user has no organization membership.","operationId":"get_api_v1_users__user_orgs","parameters":[{"description":"User ID (`usr_...`) whose organization membership you want to retrieve.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"The user's organization memberships.","example":{"data":[{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","domain":"acme.com","id":"org_0aBcDeFgHiJkLmNoPqRsTu","industry":"fintech","name":"Example Name","onboarding_track":"vendor","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","status":"active","updated_at":"2024-01-01T00:00:00Z","website":"https://example.com"}]},"properties":{"data":{"description":"Array of organization objects the user belongs to. Contains at most one item.","example":[{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","domain":"acme.com","id":"org_0aBcDeFgHiJkLmNoPqRsTu","industry":"fintech","name":"Example Name","onboarding_track":"vendor","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","status":"active","updated_at":"2024-01-01T00:00:00Z","website":"https://example.com"}],"items":{"description":"A full organization object returned on org management endpoints. Includes identity, branding, and onboarding metadata for the authenticated caller's organization.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","domain":"acme.com","id":"org_0aBcDeFgHiJkLmNoPqRsTu","industry":"fintech","name":"Example Name","onboarding_track":"vendor","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","status":"active","updated_at":"2024-01-01T00:00:00Z","website":"https://example.com"},"properties":{"created_at":{"description":"When this organization was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short human-readable description of the organization. `null` if not set.","example":"An example description.","type":"string"},"domain":{"description":"Primary domain associated with the organization, e.g. `\"acme.com\"`. `null` if not configured.","example":"acme.com","type":"string"},"id":{"description":"Organization ID (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"industry":{"description":"Industry category the organization belongs to, e.g. `\"fintech\"` or `\"healthcare\"`. `null` if not set.","example":"fintech","type":"string"},"name":{"description":"Display name of the organization. `null` if the org has not set a name.","example":"Example Name","type":"string"},"onboarding_track":{"description":"The new-user experience track this org first completed. `\"vendor\"` for orgs that onboarded as service providers; `\"customer\"` for orgs that onboarded as buyers. `null` if onboarding was not tracked.","example":"vendor","type":"string"},"sandbox":{"description":"ID of the sandbox environment scoped to this organization (`snd_...`). `null` for organizations in production mode.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"slug":{"description":"URL-safe identifier for the organization, used in vanity URLs and slug-based lookups.","example":"example-slug","type":"string"},"status":{"description":"Current lifecycle status of the organization, e.g. `\"active\"` or `\"suspended\"`. `null` if the status has not been set.","example":"active","type":"string"},"updated_at":{"description":"When this organization was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"website":{"description":"Public website URL for the organization. `null` if not set.","example":"https://example.com","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"}},"summary":"List organizations for a user","x-auth":["bearer","publishable_key"]}},"/api/v1/users/{user}/profile":{"put":{"description":"Updates one or more profile fields for the authenticated user. All\nfields are optional; omit any you do not want to change.\n\nWhen `profile_picture` is supplied, the image is uploaded and replaces\nthe existing picture. The previous picture is deleted after the new one\nis stored. Image upload failures return 422 without modifying other\nprofile fields.","operationId":"put_api_v1_users__user_profile","parameters":[{"description":"User ID (`usr_...`) or `\"me\"` for the authenticated user.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"alias":"string","full_name":"Example Name","metadata":{"key":"value"},"profile_picture":{"data":"string","filename":"string","mime_type":"application/json"}},"properties":{"alias":{"description":"Short display alias shown in place of the full name in compact UI contexts.","example":"string","type":"string"},"full_name":{"description":"Updated display name for the user.","example":"Example Name","type":"string"},"metadata":{"description":"Arbitrary key-value metadata to associate with the user. Existing keys are merged; pass `null` for a key to remove it.","example":{"key":"value"},"type":"object"},"profile_picture":{"description":"New profile picture to upload as a base64-encoded image. Replaces any existing picture.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded binary content of the image file.","example":"string","type":"string"},"filename":{"description":"Original filename of the image, used for storage metadata.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`.","example":"application/json","type":"string"}},"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"summary":"Update the current user's profile","x-auth":["bearer","publishable_key"]}},"/api/v1/users/{user}/threads":{"get":{"description":"Returns all threads visible to the specified user. The authenticated caller must\nhave access to the target user's account; a 403 is returned otherwise.\n\nPass one or more `agent` IDs to narrow results to threads where at least one of\nthe listed agents is also a member — useful for displaying every thread a user\nshares with a particular agent. Pass one or more `filter` objects to narrow\nresults by thread metadata key/value pairs. Both narrowings may be combined in\na single request.\n\nResults are returned as a flat array; no cursor-based pagination is applied.","operationId":"get_api_v1_users__user_threads","parameters":[{"description":"Array of agent user IDs (`usr_...`). When provided, only threads where at least one of the listed agents is also a member are returned. Omit or pass an empty array to return all threads regardless of agent membership.","example":["string"],"in":"query","name":"agent","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Array of metadata filter objects. Each filter matches threads whose `metadata` map contains the specified key/value pair. All filters must match (logical AND). Omit to return threads regardless of metadata.","example":[{"key":"string","type":"metadata","value":"string"}],"in":"query","name":"filter","required":false,"schema":{"items":{"description":"A simple key-value predicate for matching a top-level metadata field. Use MetadataQuery for compound boolean expressions.","example":{"key":"string","type":"metadata","value":"string"},"properties":{"key":{"description":"Top-level key of the metadata object to match against.","example":"string","type":"string"},"type":{"description":"Filter discriminator. Must be `\"metadata\"` to identify this as a metadata filter.","example":"metadata","type":"string"},"value":{"description":"Expected value for the given `key`. Matched with strict equality against the stored metadata.","example":"string","type":"string"}},"required":["key","type","value"],"type":"object"},"type":"array"}},{"description":"User ID (`usr_...`) whose threads should be listed.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"description":"Listing of threads visible to the user.","example":{"data":[{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}]},"properties":{"data":{"description":"Array of thread objects matching the requested filters and agent narrowings.","example":[{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"A chat thread, representing a conversation channel that can be owned by a user, team, or agent and may contain messages, participants, and AI agent activity.","example":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent_user":{"description":"ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the thread was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"creator":{"description":"Expanded user object for the user who created this thread. Populated only when the association is loaded.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"description":{"description":"Optional description or purpose statement for the thread. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Thread ID (`thr_...`).","example":"string","type":"string"},"is_channel":{"description":"Whether this thread operates as a channel — a multi-member broadcast-style conversation.","example":true,"type":"boolean"},"is_default":{"description":"Whether this is the default thread for its owner. Each user or team has at most one default thread.","example":true,"type":"boolean"},"is_transient":{"description":"Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.","example":true,"type":"boolean"},"is_unlisted":{"description":"Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.","example":true,"type":"boolean"},"key":{"description":"Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.","example":"string","type":"string"},"last_activity":{"description":"When the last message or activity occurred in this thread. Present only when activity enrichment is requested.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"muted":{"description":"Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.","example":true,"type":"boolean"},"org":{"description":"ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_message":{"description":"The message that spawned this thread as a sub-thread. `null` for top-level threads.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"participant":{"description":"Array of participant user IDs (`usr_...`) who are members of this thread.","example":["string"],"items":{"type":"string"},"type":"array"},"participants":{"description":"Expanded participant user objects for each member of this thread. Populated only when the association is loaded.","example":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"items":{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"participating_actor":{"description":"Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.","example":["string"],"items":{"type":"string"},"type":"array"},"participating_agents":{"description":"Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.","example":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"role":{"description":"The authenticated user's membership role in this thread, e.g. `\"owner\"`, `\"member\"`, or `\"viewer\"`. `null` if the user is not a member.","example":"member","type":"string"},"sandbox":{"description":"ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.","example":"string","type":"string"},"settings":{"description":"Per-thread configuration settings controlling AI agent behavior for this thread.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"slug":{"description":"URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.","example":"example-slug","type":"string"},"sub_threads":{"description":"Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.","example":[{}],"items":{"type":"object"},"type":"array"},"team":{"description":"ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable name of the thread. `null` if no title has been set.","example":"Example Title","type":"string"},"ttl":{"description":"Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.","example":3600,"type":"integer"},"unread_count":{"description":"Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.","example":5,"type":"integer"},"updated_at":{"description":"When the thread was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"summary":"List threads for a user","x-auth":["bearer","publishable_key"]},"post":{"description":"Creates a new thread owned by the specified user. The authenticated caller must\nhave access to the target user's account; a 403 is returned otherwise.\n\nAn automatic welcome message is sent into the thread upon creation unless\n`skip_welcome_message` is set to `true`. The thread is immediately visible to\nthe owning user and any members added at creation time.","operationId":"post_api_v1_users__user_threads","parameters":[{"description":"User ID (`usr_...`) of the user who will own the new thread.","example":"string","in":"path","name":"user","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"example":{"skip_welcome_message":true,"thread":{"create_legacy_agent":true,"description":"An example description.","is_unlisted":true,"key":"string","metadata":{"key":"value"},"muted":true,"org_id":"string","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"settings":{"agent_enabled":true},"title":"Example Title"}},"properties":{"skip_welcome_message":{"description":"When `true`, suppresses the automatic welcome message that is otherwise sent into the thread on creation. Defaults to `false`.","example":true,"type":"boolean"},"thread":{"description":"Attributes for the new thread. See ThreadCreateParams for the full set of accepted fields.","example":{"create_legacy_agent":true,"description":"An example description.","is_unlisted":true,"key":"string","metadata":{"key":"value"},"muted":true,"org_id":"string","profile_picture":{"data":"string","filename":"string","mime_type":"application/json"},"settings":{"agent_enabled":true},"title":"Example Title"},"properties":{"create_legacy_agent":{"description":"When `true`, provisions a legacy chat agent alongside the thread. Only needed for integrations that depend on the pre-v2 agent model.","example":true,"type":"boolean"},"description":{"description":"Optional longer description of the thread's purpose. `null` if not provided.","example":"An example description.","type":"string"},"is_unlisted":{"description":"When `true`, the thread is hidden from the default thread list and accessible only by direct link or ID.","example":true,"type":"boolean"},"key":{"description":"Client-assigned unique key for idempotent creation or later lookup. Must be unique within the owning organization.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value pairs stored alongside the thread. Values must be strings or numbers.","example":{"key":"value"},"type":"object"},"muted":{"description":"When `true`, push and in-app notifications for this thread are suppressed for the creating user.","example":true,"type":"boolean"},"org_id":{"description":"ID of the organization to create the thread under. Defaults to the authenticated user's primary organization when omitted.","example":"string","type":"string"},"profile_picture":{"description":"Optional profile image for the thread, provided as a base64-encoded payload.","example":{"data":"string","filename":"string","mime_type":"application/json"},"properties":{"data":{"description":"Base64-encoded image bytes.","example":"string","type":"string"},"filename":{"description":"Original filename of the uploaded image, used for display and content-type inference.","example":"string","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`.","example":"application/json","type":"string"}},"type":"object"},"settings":{"description":"Configuration overrides for the thread, such as AI model selection and context window settings.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"title":{"description":"Display name for the thread. `null` if omitted, which causes the thread to be untitled.","example":"Example Title","type":"string"}},"type":"object"}},"required":["thread"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}},"description":"Successful response"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"422":{"description":"Validation failed"}},"summary":"Create a thread for a user","x-auth":["bearer","publishable_key"]}},"/oauth/device/approve":{"post":{"description":"Grants the pending device authorization identified by `user_code`, completing\nthe OAuth Device Authorization flow on behalf of the authenticated user. Once\napproved, the device can exchange the `device_code` for an access token.\n\nRequires a valid user session — the request must be authenticated as an end\nuser, not a machine client. The `user_code` must belong to a pending (not\nexpired, not already approved or denied) authorization associated with the\ncalling app.\n\nIf the requested scopes include a `thread`-scoped permission, you must supply\nthe `thread` parameter; omitting it returns a 400 with `error: \"invalid_scope\"`.","operationId":"post_oauth_device_approve","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"thread":"string","user_code":"string"},"properties":{"thread":{"description":"Thread ID (`thr_...`) to bind to the authorization. Required when the requested scopes include a thread-scoped permission.","example":"string","type":"string"},"user_code":{"description":"User-facing verification code shown on the device. Identifies the pending authorization to approve.","example":"string","type":"string"}},"required":["user_code"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthorizationStatusResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"summary":"Approve a device authorization request"}},"/oauth/device/authorize":{"post":{"description":"Starts the OAuth 2.0 Device Authorization flow for a device that cannot\nperform browser-based redirects. Returns a `device_code` (used by the device\nto poll for a token) and a `user_code` (shown to the user to enter at the\n`verification_uri`).\n\nThis endpoint requires a publishable API key; secret keys are rejected with\na 403. Third-party OAuth must be enabled on the app; if it is not, the\nresponse returns `error: \"third_party_oauth_not_enabled\"` with a 403.\n\nThe endpoint is rate-limited to 10 requests per IP per minute. Excess\nrequests receive a 429 response. The returned codes expire after\n`expires_in` seconds; once expired, a new authorization request must be\ninitiated.","operationId":"post_oauth_device_authorize","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"client":"string","scope":"string"},"properties":{"client":{"description":"OAuth client ID (`cli_...`) identifying the application requesting authorization.","example":"string","type":"string"},"scope":{"description":"Space-separated list of OAuth scopes to request, e.g. `\"read write\"`. Omit to request only the default scopes configured for the client.","example":"string","type":"string"}},"required":["client"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthorizationResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"403":{"description":"Forbidden"},"429":{"description":"Rate limited"}},"summary":"Initiate a device authorization request"}},"/oauth/device/deny":{"post":{"description":"Rejects the pending device authorization identified by `user_code`, preventing\nthe device from obtaining an access token. Once denied, the device will\nreceive an `access_denied` error on its next token poll.\n\nRequires a valid user session. The `user_code` must belong to a pending\nauthorization associated with the calling app. Attempting to deny an already\napproved, already denied, or expired authorization returns a 400.","operationId":"post_oauth_device_deny","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"user_code":"string"},"properties":{"user_code":{"description":"User-facing verification code shown on the device. Identifies the pending authorization to deny.","example":"string","type":"string"}},"required":["user_code"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthorizationStatusResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"summary":"Deny a device authorization request"}},"/oauth/scopes":{"get":{"description":"Returns the complete set of OAuth scopes that the platform supports.\nUse this endpoint to discover which scopes are available before constructing\nan authorization request or rendering a consent UI.\n\nNo authentication is required. The response is the same for all callers.","operationId":"get_oauth_scopes","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"description":"An object containing all available OAuth scope definitions.","example":{"scopes":{}},"properties":{"scopes":{"description":"Map of scope name to its definition object. Each key is a scope string (e.g. `\"thread:read\"`) and each value describes the scope's purpose and requirements.","example":{},"type":"object"}},"required":["scopes"],"type":"object"}}},"description":"Successful response"}},"summary":"List available OAuth scopes"}},"/oauth/token":{"post":{"description":"Issues an access token and a refresh token in exchange for a valid grant.\nThree grant types are supported: `\"authorization_code\"`, `\"refresh_token\"`,\nand `\"urn:ietf:params:oauth:grant-type:device_code\"`.\n\nFor `\"authorization_code\"` grants, supply `code`, `client`, `redirect_uri`, and\noptionally `code_verifier` for PKCE flows. Each authorization code is single-use;\nconsuming it a second time returns `invalid_grant`.\n\nFor `\"refresh_token\"` grants, supply `refresh_token`. The endpoint rotates the\nrefresh token on every call and returns a fresh pair of tokens.\n\nFor device-code grants, supply `device_code` and `client`. Poll this endpoint\nafter receiving `authorization_pending` until the user approves or the code\nexpires. Slow down polling if you receive `slow_down`.\n\nThis endpoint is rate-limited to 20 requests per IP per 60 seconds. Exceeding\nthe limit returns HTTP 429 with `\"error\": \"too_many_requests\"`.","operationId":"post_oauth_token","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"example":{"client":"string","code":"string","code_verifier":"string","device_code":"string","grant_type":"string","redirect_uri":"https://example.com","refresh_token":"string"},"properties":{"client":{"description":"OAuth client ID identifying the application requesting tokens. Required for `\"authorization_code\"` and device-code grants.","example":"string","type":"string"},"code":{"description":"Single-use authorization code issued by the authorization endpoint. Required for `\"authorization_code\"` grants.","example":"string","type":"string"},"code_verifier":{"description":"PKCE code verifier corresponding to the `code_challenge` sent in the authorization request. Required when the authorization code was issued with a code challenge; omit otherwise.","example":"string","type":"string"},"device_code":{"description":"Device code received from the device authorization endpoint. Required for device-code grants.","example":"string","type":"string"},"grant_type":{"description":"The OAuth 2.0 grant type. One of `\"authorization_code\"`, `\"refresh_token\"`, or `\"urn:ietf:params:oauth:grant-type:device_code\"`.","example":"string","type":"string"},"redirect_uri":{"description":"Redirect URI that was used in the original authorization request. Must exactly match the URI on record for the client. Required for `\"authorization_code\"` grants.","example":"https://example.com","type":"string"},"refresh_token":{"description":"Refresh token received from a previous token response. Required for `\"refresh_token\"` grants. The token is rotated on each successful call.","example":"string","type":"string"}},"required":["grant_type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenResponse"}}},"description":"Successful response"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"429":{"description":"Rate limited"}},"summary":"Exchange a grant for OAuth tokens"}}},"x-archastro-docs-scope":"external","x-auth-schemes":{"bearer":{"description":"User JWT in Authorization header","scheme":"bearer","type":"http"},"device_flow":{"description":"Third-party device flow token — requires per-action opt-in","scheme":"bearer","type":"http","x-token-use":"third_party"},"publishable_key":{"description":"Publishable API key — identifies the app","in":"header","name":"x-archastro-api-key","prefix":"pk_","type":"api_key"},"secret_key":{"description":"Secret API key — full admin access, no user JWT required","in":"header","name":"x-archastro-api-key","prefix":"sk_","type":"api_key"}},"x-channel-auth":["bearer"],"x-channels":[{"description":"Channel for real-time chat messaging.\n\nSupports team-scoped and user-scoped threads with keyed, transient, and direct\nthread access patterns.","joins":[{"description":"Join a team-scoped thread by ID","name":"join_team_thread","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"limit":1,"team_id":"string","thread_id":"string"},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"limit":{"example":1,"type":"integer"},"team_id":{"example":"string","type":"string"},"thread_id":{"example":"string","type":"string"}},"required":["team_id","thread_id"],"type":"object"},"pattern":"api:chat:team:{team_id}:thread:{thread_id}","returns":{"type":"object"}},{"description":"Join a team-scoped transient (ephemeral) thread","name":"join_team_transient","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"key":"string","limit":1,"team_id":"string"},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"key":{"example":"string","type":"string"},"limit":{"example":1,"type":"integer"},"team_id":{"example":"string","type":"string"}},"required":["key","team_id"],"type":"object"},"pattern":"api:chat:team:{team_id}:transient:{key}","returns":{"type":"object"}},{"description":"Join a user-scoped thread by ID","name":"join_user_thread","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"limit":1,"thread_id":"string"},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"limit":{"example":1,"type":"integer"},"thread_id":{"example":"string","type":"string"}},"required":["thread_id"],"type":"object"},"pattern":"api:chat:user:thread:{thread_id}","returns":{"type":"object"}},{"description":"Join a user-scoped transient (ephemeral) thread","name":"join_user_transient","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"key":"string","limit":1},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"key":{"example":"string","type":"string"},"limit":{"example":1,"type":"integer"}},"required":["key"],"type":"object"},"pattern":"api:chat:user:transient:{key}","returns":{"type":"object"}},{"description":"Join or create a team-scoped keyed thread","name":"join_team_keyed","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"key":"string","limit":1,"team_id":"string"},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"key":{"example":"string","type":"string"},"limit":{"example":1,"type":"integer"},"team_id":{"example":"string","type":"string"}},"required":["key","team_id"],"type":"object"},"pattern":"api:chat:team:{team_id}:key:{key}","returns":{"type":"object"}},{"description":"Join or create a user-scoped keyed thread","name":"join_user_keyed","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"key":"string","limit":1},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"key":{"example":"string","type":"string"},"limit":{"example":1,"type":"integer"}},"required":["key"],"type":"object"},"pattern":"api:chat:user:key:{key}","returns":{"type":"object"}}],"messages":[{"description":"Add an emoji reaction to a message","event":"api:chat:add_reaction","params":{"example":{"emoji":"string","message_id":"string"},"properties":{"emoji":{"example":"string","type":"string"},"message_id":{"example":"string","type":"string"}},"required":["emoji","message_id"],"type":"object"},"returns":{"description":"Empty acknowledgement payload returned by channel message handlers that produce no data. The wire envelope is `{\"status\": \"ok\", \"response\": {}}`.","properties":{},"type":"object"}},{"description":"Delete a message","event":"api:chat:delete_message","params":{"example":{"message_id":"string"},"properties":{"message_id":{"example":"string","type":"string"}},"required":["message_id"],"type":"object"},"returns":{"description":"Empty acknowledgement payload returned by channel message handlers that produce no data. The wire envelope is `{\"status\": \"ok\", \"response\": {}}`.","properties":{},"type":"object"}},{"description":"Edit an existing message's content","event":"api:chat:edit_message","params":{"example":{"content":"string","message_id":"string"},"properties":{"content":{"example":"string","type":"string"},"message_id":{"example":"string","type":"string"}},"required":["content","message_id"],"type":"object"},"returns":{"description":"Empty acknowledgement payload returned by channel message handlers that produce no data. The wire envelope is `{\"status\": \"ok\", \"response\": {}}`.","properties":{},"type":"object"}},{"description":"Fork a sub-thread from an existing message","event":"api:chat:fork_thread","params":{"example":{"message_id":"string","title":"Example Title"},"properties":{"message_id":{"example":"string","type":"string"},"title":{"example":"Example Title","type":"string"}},"required":["message_id"],"type":"object"},"returns":{"description":"Response returned after forking a chat thread. Contains the new thread, its initial chat-room snapshot, and the owning team when applicable.","example":{"chat_model":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"properties":{"chat_model":{"description":"Initial chat-room render snapshot for the forked thread, including members and loaded messages. `null` for transient threads whose room model is suppressed.","example":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"properties":{"after_cursor":{"description":"Opaque cursor to pass when fetching messages newer than those in this snapshot. `null` when this snapshot already reflects the latest messages.","example":"string","type":"string"},"agent":{"description":"The agent associated with this chat room. `null` when no agent is attached.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"before_cursor":{"description":"Opaque cursor to pass when fetching messages older than those in this snapshot. `null` when the beginning of the thread history has been reached.","example":"string","type":"string"},"is_transient":{"description":"Whether this thread is ephemeral. Transient threads are not retained in long-term storage and may be deleted when the session ends.","example":true,"type":"boolean"},"members":{"description":"All active members of the chat room, including both human users and agents.","example":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"items":{"description":"A participant in a chat thread, which may be either a human user or an AI agent. Exactly one of `user` or `agent` is populated depending on `type`.","example":{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"agent":{"description":"Full agent object for this member. Populated when `type` is `\"agent\"`; `null` for user members.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"membership_type":{"description":"Role of this member within the thread. Common values are `\"owner\"` and `\"member\"`. `null` when the membership type is not applicable.","example":"owner","type":"string"},"type":{"description":"Kind of participant. One of `\"user\"` (a human user) or `\"agent\"` (an AI agent).","example":"user","type":"string"},"user":{"description":"Full user object for this member. Populated when `type` is `\"user\"`; `null` for agent members.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"}},"required":["type"],"type":"object"},"type":"array"},"messages":{"description":"The page of messages currently loaded for the thread, ordered chronologically. Use `before_cursor` or `after_cursor` to page through additional history.","example":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"items":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"messages_loaded_on_last_update":{"description":"Number of messages that were added to the snapshot in the most recent incremental update. `null` on the initial load.","example":1,"type":"integer"},"team":{"description":"The team that owns this thread. `null` for threads scoped to an individual user rather than a team.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"properties":{"acl":{"description":"Access control list governing visibility and join permissions for this team. `null` when no ACL restrictions are applied and the team inherits default access rules.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the developer application this team belongs to (`dap_...`). `null` if the team is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"badges":{"description":"Aggregated badge counts for the team, keyed by category. `null` when badge data is not loaded.","example":{},"type":"object"},"created_at":{"description":"When this team was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Human-readable description of the team's purpose. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Team ID (`tem_...`).","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"membership_status":{"description":"The authenticated viewer's role on this team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`. `null` if the viewer is not a member.","example":"member","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this team. Returns an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the team.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this team belongs to (`org_...`). `null` if the team is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"ID of the developer sandbox this team is scoped to (`dsb_...`). `null` outside sandbox contexts.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"slug":{"description":"URL-safe slug for the team, derived from the team name. `null` if not set.","example":"example-slug","type":"string"},"updated_at":{"description":"When this team was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"thread":{"description":"The parent thread whose message history and membership this snapshot represents.","example":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent_user":{"description":"ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the thread was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"creator":{"description":"Expanded user object for the user who created this thread. Populated only when the association is loaded.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"description":{"description":"Optional description or purpose statement for the thread. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Thread ID (`thr_...`).","example":"string","type":"string"},"is_channel":{"description":"Whether this thread operates as a channel — a multi-member broadcast-style conversation.","example":true,"type":"boolean"},"is_default":{"description":"Whether this is the default thread for its owner. Each user or team has at most one default thread.","example":true,"type":"boolean"},"is_transient":{"description":"Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.","example":true,"type":"boolean"},"is_unlisted":{"description":"Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.","example":true,"type":"boolean"},"key":{"description":"Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.","example":"string","type":"string"},"last_activity":{"description":"When the last message or activity occurred in this thread. Present only when activity enrichment is requested.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"muted":{"description":"Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.","example":true,"type":"boolean"},"org":{"description":"ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_message":{"description":"The message that spawned this thread as a sub-thread. `null` for top-level threads.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"participant":{"description":"Array of participant user IDs (`usr_...`) who are members of this thread.","example":["string"],"items":{"type":"string"},"type":"array"},"participants":{"description":"Expanded participant user objects for each member of this thread. Populated only when the association is loaded.","example":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"items":{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"participating_actor":{"description":"Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.","example":["string"],"items":{"type":"string"},"type":"array"},"participating_agents":{"description":"Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.","example":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"role":{"description":"The authenticated user's membership role in this thread, e.g. `\"owner\"`, `\"member\"`, or `\"viewer\"`. `null` if the user is not a member.","example":"member","type":"string"},"sandbox":{"description":"ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.","example":"string","type":"string"},"settings":{"description":"Per-thread configuration settings controlling AI agent behavior for this thread.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"slug":{"description":"URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.","example":"example-slug","type":"string"},"sub_threads":{"description":"Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.","example":[{}],"items":{"type":"object"},"type":"array"},"team":{"description":"ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable name of the thread. `null` if no title has been set.","example":"Example Title","type":"string"},"ttl":{"description":"Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.","example":3600,"type":"integer"},"unread_count":{"description":"Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.","example":5,"type":"integer"},"updated_at":{"description":"When the thread was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"}},"required":["is_transient","members","messages","thread"],"type":"object"},"team":{"description":"Team that owns the forked thread. Present only when the original thread was team-scoped; `null` for personal threads.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"properties":{"acl":{"description":"Access control list governing visibility and join permissions for this team. `null` when no ACL restrictions are applied and the team inherits default access rules.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the developer application this team belongs to (`dap_...`). `null` if the team is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"badges":{"description":"Aggregated badge counts for the team, keyed by category. `null` when badge data is not loaded.","example":{},"type":"object"},"created_at":{"description":"When this team was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Human-readable description of the team's purpose. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Team ID (`tem_...`).","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"membership_status":{"description":"The authenticated viewer's role on this team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`. `null` if the viewer is not a member.","example":"member","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this team. Returns an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the team.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this team belongs to (`org_...`). `null` if the team is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"ID of the developer sandbox this team is scoped to (`dsb_...`). `null` outside sandbox contexts.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"slug":{"description":"URL-safe slug for the team, derived from the team name. `null` if not set.","example":"example-slug","type":"string"},"updated_at":{"description":"When this team was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"thread":{"description":"The newly-created thread produced by the fork operation.","example":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent_user":{"description":"ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the thread was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"creator":{"description":"Expanded user object for the user who created this thread. Populated only when the association is loaded.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"description":{"description":"Optional description or purpose statement for the thread. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Thread ID (`thr_...`).","example":"string","type":"string"},"is_channel":{"description":"Whether this thread operates as a channel — a multi-member broadcast-style conversation.","example":true,"type":"boolean"},"is_default":{"description":"Whether this is the default thread for its owner. Each user or team has at most one default thread.","example":true,"type":"boolean"},"is_transient":{"description":"Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.","example":true,"type":"boolean"},"is_unlisted":{"description":"Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.","example":true,"type":"boolean"},"key":{"description":"Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.","example":"string","type":"string"},"last_activity":{"description":"When the last message or activity occurred in this thread. Present only when activity enrichment is requested.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"muted":{"description":"Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.","example":true,"type":"boolean"},"org":{"description":"ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_message":{"description":"The message that spawned this thread as a sub-thread. `null` for top-level threads.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"participant":{"description":"Array of participant user IDs (`usr_...`) who are members of this thread.","example":["string"],"items":{"type":"string"},"type":"array"},"participants":{"description":"Expanded participant user objects for each member of this thread. Populated only when the association is loaded.","example":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"items":{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"participating_actor":{"description":"Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.","example":["string"],"items":{"type":"string"},"type":"array"},"participating_agents":{"description":"Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.","example":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"role":{"description":"The authenticated user's membership role in this thread, e.g. `\"owner\"`, `\"member\"`, or `\"viewer\"`. `null` if the user is not a member.","example":"member","type":"string"},"sandbox":{"description":"ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.","example":"string","type":"string"},"settings":{"description":"Per-thread configuration settings controlling AI agent behavior for this thread.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"slug":{"description":"URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.","example":"example-slug","type":"string"},"sub_threads":{"description":"Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.","example":[{}],"items":{"type":"object"},"type":"array"},"team":{"description":"ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable name of the thread. `null` if no title has been set.","example":"Example Title","type":"string"},"ttl":{"description":"Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.","example":3600,"type":"integer"},"unread_count":{"description":"Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.","example":5,"type":"integer"},"updated_at":{"description":"When the thread was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"}},"required":["thread"],"type":"object"}},{"description":"List all messages in the current thread","event":"api:chat:list_messages","params":{"properties":{},"type":"object"},"returns":{"description":"Response returned when listing the messages of a joined chat thread. Contains the set of messages currently loaded for the thread.","example":{"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}]},"properties":{"messages":{"description":"Ordered array of message objects currently loaded for the thread, from oldest to newest. Use the `load_more_messages` channel message to fetch earlier pages.","example":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"items":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["messages"],"type":"object"}},{"description":"Load additional messages with cursor-based pagination","event":"api:chat:load_more_messages","params":{"example":{"after_cursor":"string","before_cursor":"string","include_metadata":true,"limit":1},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"include_metadata":{"example":true,"type":"boolean"},"limit":{"example":1,"type":"integer"}},"type":"object"},"returns":{"description":"Response returned after loading an additional page of chat messages. Contains a refreshed chat-room snapshot with the newly-fetched messages merged in.","example":{"data":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}}},"properties":{"data":{"description":"Updated chat-room snapshot for the thread, incorporating the newly-loaded page of messages alongside any previously loaded messages.","example":{"after_cursor":"string","agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"before_cursor":"string","is_transient":true,"members":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"messages":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"messages_loaded_on_last_update":1,"team":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"thread":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}},"properties":{"after_cursor":{"description":"Opaque cursor to pass when fetching messages newer than those in this snapshot. `null` when this snapshot already reflects the latest messages.","example":"string","type":"string"},"agent":{"description":"The agent associated with this chat room. `null` when no agent is attached.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"before_cursor":{"description":"Opaque cursor to pass when fetching messages older than those in this snapshot. `null` when the beginning of the thread history has been reached.","example":"string","type":"string"},"is_transient":{"description":"Whether this thread is ephemeral. Transient threads are not retained in long-term storage and may be deleted when the session ends.","example":true,"type":"boolean"},"members":{"description":"All active members of the chat room, including both human users and agents.","example":[{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}}],"items":{"description":"A participant in a chat thread, which may be either a human user or an AI agent. Exactly one of `user` or `agent` is populated depending on `type`.","example":{"agent":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"membership_type":"owner","type":"user","user":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}},"properties":{"agent":{"description":"Full agent object for this member. Populated when `type` is `\"agent\"`; `null` for user members.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"membership_type":{"description":"Role of this member within the thread. Common values are `\"owner\"` and `\"member\"`. `null` when the membership type is not applicable.","example":"owner","type":"string"},"type":{"description":"Kind of participant. One of `\"user\"` (a human user) or `\"agent\"` (an AI agent).","example":"user","type":"string"},"user":{"description":"Full user object for this member. Populated when `type` is `\"user\"`; `null` for agent members.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"}},"required":["type"],"type":"object"},"type":"array"},"messages":{"description":"The page of messages currently loaded for the thread, ordered chronologically. Use `before_cursor` or `after_cursor` to page through additional history.","example":[{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}],"items":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"messages_loaded_on_last_update":{"description":"Number of messages that were added to the snapshot in the most recent incremental update. `null` on the initial load.","example":1,"type":"integer"},"team":{"description":"The team that owns this thread. `null` for threads scoped to an individual user rather than a team.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","badges":{},"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"tem_0aBcDeFgHiJkLmNoPqRsTu","membership_status":"member","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","slug":"example-slug","updated_at":"2024-01-01T00:00:00Z"},"properties":{"acl":{"description":"Access control list governing visibility and join permissions for this team. `null` when no ACL restrictions are applied and the team inherits default access rules.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the developer application this team belongs to (`dap_...`). `null` if the team is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"badges":{"description":"Aggregated badge counts for the team, keyed by category. `null` when badge data is not loaded.","example":{},"type":"object"},"created_at":{"description":"When this team was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Human-readable description of the team's purpose. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Team ID (`tem_...`).","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"membership_status":{"description":"The authenticated viewer's role on this team. One of `\"owner\"`, `\"admin\"`, or `\"member\"`. `null` if the viewer is not a member.","example":"member","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to this team. Returns an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"name":{"description":"Display name of the team.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this team belongs to (`org_...`). `null` if the team is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"ID of the developer sandbox this team is scoped to (`dsb_...`). `null` outside sandbox contexts.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"slug":{"description":"URL-safe slug for the team, derived from the team name. `null` if not set.","example":"example-slug","type":"string"},"updated_at":{"description":"When this team was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"}},"required":["id"],"type":"object"},"thread":{"description":"The parent thread whose message history and membership this snapshot represents.","example":{"agent_user":"agi_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","creator":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"description":"An example description.","id":"string","is_channel":true,"is_default":true,"is_transient":true,"is_unlisted":true,"key":"string","last_activity":"2024-01-01T00:00:00Z","metadata":{"key":"value"},"muted":true,"org":"org_0aBcDeFgHiJkLmNoPqRsTu","parent_message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"participant":["string"],"participants":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"participating_actor":["string"],"participating_agents":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"role":"member","sandbox":"string","settings":{"agent_enabled":true},"slug":"example-slug","sub_threads":[{}],"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","ttl":3600,"unread_count":5,"updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent_user":{"description":"ID of the agent that owns this thread (`agt_...`). `null` for user-owned or team-owned threads.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the thread was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"creator":{"description":"Expanded user object for the user who created this thread. Populated only when the association is loaded.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"description":{"description":"Optional description or purpose statement for the thread. `null` if not set.","example":"An example description.","type":"string"},"id":{"description":"Thread ID (`thr_...`).","example":"string","type":"string"},"is_channel":{"description":"Whether this thread operates as a channel — a multi-member broadcast-style conversation.","example":true,"type":"boolean"},"is_default":{"description":"Whether this is the default thread for its owner. Each user or team has at most one default thread.","example":true,"type":"boolean"},"is_transient":{"description":"Whether this thread is ephemeral and may be deleted automatically after a period of inactivity or when its TTL expires.","example":true,"type":"boolean"},"is_unlisted":{"description":"Whether this thread is hidden from public discovery. Unlisted threads are accessible only to direct participants.","example":true,"type":"boolean"},"key":{"description":"Application-defined stable key that uniquely identifies the thread within its scope. Useful for idempotent creation. `null` if not set.","example":"string","type":"string"},"last_activity":{"description":"When the last message or activity occurred in this thread. Present only when activity enrichment is requested.","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the thread. Shape is application-defined; `null` if no metadata has been set.","example":{"key":"value"},"type":"object"},"muted":{"description":"Whether the authenticated user has muted notifications for this thread. `true` suppresses all notification delivery.","example":true,"type":"boolean"},"org":{"description":"ID of the organization this thread belongs to (`org_...`). `null` for threads outside an org context.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"parent_message":{"description":"The message that spawned this thread as a sub-thread. `null` for top-level threads.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"participant":{"description":"Array of participant user IDs (`usr_...`) who are members of this thread.","example":["string"],"items":{"type":"string"},"type":"array"},"participants":{"description":"Expanded participant user objects for each member of this thread. Populated only when the association is loaded.","example":[{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"}],"items":{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"participating_actor":{"description":"Composite actor identifiers for all participants currently active in this thread. Present only when actor enrichment is requested.","example":["string"],"items":{"type":"string"},"type":"array"},"participating_agents":{"description":"Expanded agent objects for all agents participating in this thread. Present only when agent enrichment is requested.","example":[{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"role":{"description":"The authenticated user's membership role in this thread, e.g. `\"owner\"`, `\"member\"`, or `\"viewer\"`. `null` if the user is not a member.","example":"member","type":"string"},"sandbox":{"description":"ID of the developer sandbox this thread is scoped to (`sbx_...`). `null` for production threads.","example":"string","type":"string"},"settings":{"description":"Per-thread configuration settings controlling AI agent behavior for this thread.","example":{"agent_enabled":true},"properties":{"agent_enabled":{"description":"Whether the AI agent is active for this thread. `true` enables AI responses; `false` disables them. Defaults to `true` when settings have not been explicitly configured.","example":true,"type":"boolean"}},"type":"object"},"slug":{"description":"URL-safe slug for the thread, used in human-readable permalinks. `null` if not assigned.","example":"example-slug","type":"string"},"sub_threads":{"description":"Threads that are nested under this thread as replies to a parent message. Present only when sub-thread enrichment is requested.","example":[{}],"items":{"type":"object"},"type":"array"},"team":{"description":"ID of the team that owns this thread (`team_...`). `null` for user-owned or agent-owned threads.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"Human-readable name of the thread. `null` if no title has been set.","example":"Example Title","type":"string"},"ttl":{"description":"Time-to-live in seconds after which the thread may be automatically cleaned up. `null` if the thread does not expire.","example":3600,"type":"integer"},"unread_count":{"description":"Number of messages in this thread that the authenticated user has not yet read. Present only when read-state enrichment is requested.","example":5,"type":"integer"},"updated_at":{"description":"When the thread was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user who owns this thread (`usr_...`). `null` for team-owned or agent-owned threads.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"}},"required":["is_transient","members","messages","thread"],"type":"object"}},"required":["data"],"type":"object"}},{"description":"Mark a thread as read up to a given message","event":"api:chat:mark_thread_read","params":{"example":{"message_id":"string"},"properties":{"message_id":{"example":"string","type":"string"}},"required":["message_id"],"type":"object"},"returns":{"description":"Response returned after marking a chat thread as read. Confirms that the read marker was successfully recorded for the authenticated user.","example":{"success":true},"properties":{"success":{"description":"Indicates whether the read marker was successfully applied. Always `true` on success; errors are returned as channel error replies rather than a `false` value here.","example":true,"type":"boolean"}},"required":["success"],"type":"object"}},{"description":"Post a new message with optional uploads and reply-to","event":"api:chat:post_message","params":{"example":{"content":"string","idempotency_key":"string","reply_to":"string","uploads":[{}]},"properties":{"content":{"example":"string","type":"string"},"idempotency_key":{"example":"string","type":"string"},"reply_to":{"example":"string","type":"string"},"uploads":{"example":[{}],"items":{"type":"object"},"type":"array"}},"required":["content"],"type":"object"},"returns":{"description":"Response returned after successfully posting a message to a chat thread. Contains the persisted message object echoed back to the sender.","example":{"message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}},"properties":{"message":{"description":"The message that was created and stored. Contains the full message object including its assigned ID, author, content, and timestamps.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"}},"required":["message"],"type":"object"}},{"description":"Post a simple text message","event":"api:chat:post_simple_message","params":{"example":{"content":"string","idempotency_key":"string","reply_to":"string"},"properties":{"content":{"example":"string","type":"string"},"idempotency_key":{"example":"string","type":"string"},"reply_to":{"example":"string","type":"string"}},"type":"object"},"returns":{"description":"Response returned after successfully posting a message to a chat thread. Contains the persisted message object echoed back to the sender.","example":{"message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"}},"properties":{"message":{"description":"The message that was created and stored. Contains the full message object including its assigned ID, author, content, and timestamps.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"}},"required":["message"],"type":"object"}},{"description":"Remove an emoji reaction from a message","event":"api:chat:remove_reaction","params":{"example":{"emoji":"string","message_id":"string"},"properties":{"emoji":{"example":"string","type":"string"},"message_id":{"example":"string","type":"string"}},"required":["emoji","message_id"],"type":"object"},"returns":{"description":"Empty acknowledgement payload returned by channel message handlers that produce no data. The wire envelope is `{\"status\": \"ok\", \"response\": {}}`.","properties":{},"type":"object"}}],"name":"ApiChatChannel","pushes":[{"description":"Broadcast system-wide events","event":"system_event","payload":{"example":{"event":{}},"properties":{"event":{"example":{},"type":"object"}},"type":"object"}},{"description":"Broadcast thread-level events (agent updates, read state, unread counts)","event":"thread_event","payload":{"example":{"payload":{},"thread_id":"string","type":"string"},"properties":{"payload":{"example":{},"type":"object"},"thread_id":{"example":"string","type":"string"},"type":{"example":"string","type":"string"}},"type":"object"}},{"description":"Broadcast when a message is updated or removed","event":"message_updated","payload":{"example":{"message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"thread_id":"string"},"properties":{"message":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"thread_id":{"example":"string","type":"string"}},"type":"object"}},{"description":"Broadcast when a new message is added to a thread","event":"message_added","payload":{"example":{"after_cursor":"string","before_cursor":"string","message":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"thread_id":"string"},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"message":{"description":"A chat message posted in a thread, including its content, author, attachments, reactions, and optional reply metadata.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"properties":{"actors":{"description":"Resolved actor descriptors for the message sender, combining identity and display metadata. Always contains exactly one entry.","example":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"items":{"description":"The entity that authored a message, either a human user or an agent.","example":{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}},"properties":{"alias":{"description":"Short handle or alias for the actor, used as an alternate display identifier. `null` if not configured.","example":"alice","type":"string"},"id":{"description":"Composite actor identifier. Format is `\"user-<usr_...>\"` for human users or `\"agent-<agi_...>\"` for agents.","example":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","type":"string"},"name":{"description":"Display name of the actor shown in the UI. `null` if no name is set.","example":"Example Name","type":"string"},"profile_picture":{"description":"Profile picture for the actor. `null` if the actor has no profile picture.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"}},"type":"object"},"type":"array"},"agent":{"description":"ID of the agent user that sent this message (`agi_...`). `null` for messages sent by human users.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Files, links, tasks, media, artifacts, and actions attached to this message. Empty array if there are no attachments.","example":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"items":{"description":"A rich attachment associated with a message, such as a file, scraped link, artifact, task, media item, or inline action.","example":{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1},"properties":{"content_type":{"description":"MIME type of the attached file, e.g. `\"image/png\"` or `\"application/pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"application/json","type":"string"},"description":{"description":"Short description. The page meta-description for `scraped_link`, the artifact description for `artifact`, and the task description for `task` types. `null` on other types.","example":"An example description.","type":"string"},"filename":{"description":"Original filename of the attached file, e.g. `\"report.pdf\"`. Present on `file`, `artifact`, and `media` types. `null` otherwise.","example":"string","type":"string"},"height":{"description":"Height in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"},"id":{"description":"Unique identifier for this attachment within the message.","example":"string","type":"string"},"image_height":{"description":"Height in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"image_source":{"description":"Image source metadata for inline rendering. Present on `file`, `scraped_link`, `artifact`, and `media` types when the content is an image. `null` otherwise.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"image_url":{"description":"URL of the preview image extracted from the scraped page. Present on `scraped_link` type only. `null` otherwise.","example":"https://example.com","type":"string"},"image_width":{"description":"Width in pixels of the scraped preview image. Present on `scraped_link` type only. `null` otherwise.","example":1,"type":"integer"},"media_type":{"description":"The media category, e.g. `\"video\"` or `\"audio\"`. Present on `media` type only. `null` otherwise.","example":"application/json","type":"string"},"name":{"description":"Display name of the media item. Present on `media` type only. `null` otherwise.","example":"Example Name","type":"string"},"object":{"description":"The full embedded object payload. For `task` type, contains the task record. For `action` type, contains the action definition. `null` on other types.","example":{},"type":"object"},"title":{"description":"Display title. The page title for `scraped_link`, the artifact name for `artifact`, and the task title for `task` types. `null` on other types.","example":"Example Title","type":"string"},"type":{"description":"The attachment type. One of `\"file\"`, `\"scraped_link\"`, `\"artifact\"`, `\"task\"`, `\"media\"`, or `\"action\"`. Determines which additional fields are present.","example":"file","type":"string"},"url":{"description":"URL to access the resource. A signed download URL for `file` and `artifact` types; the original URL for `scraped_link`; a media playback URL for `media`. `null` on `task` and `action` types.","example":"https://example.com","type":"string"},"variants":{"description":"Array of available encoding variants for the media item (e.g. different resolutions). Present on `media` type only. `null` otherwise.","example":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"items":{"description":"A processed variant of a media item, such as the original upload or a resized thumbnail, including a signed download URL resolved at request time.","example":{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800},"properties":{"content_type":{"description":"MIME type of this variant's file (e.g., `\"image/jpeg\"`, `\"video/mp4\"`). `null` if the file is not loaded.","example":"application/json","type":"string"},"created_at":{"description":"When this variant was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"file":{"description":"ID of the underlying storage file that backs this variant (`fil_...`).","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"filename":{"description":"Original filename of the uploaded file for this variant. `null` if the file is not loaded.","example":"string","type":"string"},"height":{"description":"Height of this variant in pixels. `null` if not recorded.","example":600,"type":"integer"},"id":{"description":"Media variant ID (`mvr_...`).","example":"mvr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"image_source":{"description":"Resolved image delivery metadata for this variant, including dimensions and CDN URL. `null` for non-image content types.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"updated_at":{"description":"When this variant was last updated (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"url":{"description":"Signed download URL for this variant, resolved at request time. `null` if the file is unavailable.","example":"https://example.com","type":"string"},"variant_key":{"description":"Identifier for this variant's processing tier. Common values include `\"original\"` (the unmodified upload) and `\"thumbnail\"` (a resized preview).","example":"original","type":"string"},"width":{"description":"Width of this variant in pixels. `null` if not recorded.","example":800,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"version":{"description":"Version number of the attached artifact at the time of attachment. Present on `artifact` type only. `null` otherwise.","example":1,"type":"integer"},"width":{"description":"Width in pixels of the media item. Present on `media` type only. `null` otherwise.","example":1,"type":"integer"}},"required":["id","type"],"type":"object"},"type":"array"},"branched_thread":{"description":"ID of the thread that was branched from this message (`thr_...`). `null` if this message has not spawned a branch thread.","example":"string","type":"string"},"content":{"description":"Text content of the message. `null` for messages that contain only attachments.","example":"Hello, how can I help you today?","type":"string"},"created_at":{"description":"When the message was posted (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"has_replies":{"description":"Whether this message has at least one reply. Only present when explicitly requested or computed by the server.","example":true,"type":"boolean"},"id":{"description":"Message ID (`msg_...`).","example":"msg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"idempotency_key":{"description":"Client-supplied idempotency key used to deduplicate message sends. `null` if the sender did not provide one.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"legacy_agent":{"description":"Identifier of the legacy chat agent that sent this message, if applicable. `null` for messages sent by users or modern agent users.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the message. Always present; defaults to an empty object when no metadata has been set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization that owns this message (`org_...`).","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"reactions":{"description":"Emoji and other reactions added to this message by users. Empty array if no reactions have been added or the association is not preloaded.","example":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"items":{"description":"A compact reaction record embedded in a message's `reactions` array, representing a single user's reaction to a message.","example":{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"},"properties":{"payload":{"description":"Type-specific reaction data. For `\"emoji_reaction\"` reactions, contains an `emoji` key with the Unicode emoji string (e.g., `\"👍\"`).","example":{"key":"value"},"type":"object"},"type":{"description":"Reaction type identifier. Currently always `\"emoji_reaction\"` for emoji-based reactions.","example":"emoji_reaction","type":"string"},"user":{"description":"Public ID of the user who added the reaction (`usr_...`).","example":"string","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"rendering_mode":{"description":"Display hint for how the message should be rendered. One of `\"reply\"`, `\"direct\"`, or `\"inline\"`. `null` for user-authored messages, which are always rendered as standard replies.","example":"reply","type":"string"},"replies":{"description":"Inline array of reply messages, each serialized as a full message object. Only present when the server has preloaded replies for this message.","example":[{}],"items":{"type":"object"},"type":"array"},"replies_after_cursor":{"description":"Opaque pagination cursor to fetch replies posted after the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"replies_before_cursor":{"description":"Opaque pagination cursor to fetch replies posted before the current page. Only present when inline replies are included in the response.","example":"string","type":"string"},"reply_count":{"description":"Total number of direct replies to this message. Only present when explicitly requested or computed by the server.","example":1,"type":"integer"},"reply_to":{"description":"The parent message this message is a reply to, expanded as a full message object when loaded. `null` if this is a top-level message or the association is not preloaded.","example":{"actors":[{"alias":"alice","id":"user-usr_01j3k5m7n9p2r4s6t8v0w1x2","name":"Example Name","profile_picture":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800}}],"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{"content_type":"application/json","description":"An example description.","filename":"string","height":1,"id":"string","image_height":1,"image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"image_url":"https://example.com","image_width":1,"media_type":"application/json","name":"Example Name","object":{},"title":"Example Title","type":"file","url":"https://example.com","variants":[{"content_type":"application/json","created_at":"2024-01-01T00:00:00Z","file":"fil_0aBcDeFgHiJkLmNoPqRsTu","filename":"string","height":600,"id":"mvr_0aBcDeFgHiJkLmNoPqRsTu","image_source":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"updated_at":"2024-01-01T00:00:00Z","url":"https://example.com","variant_key":"original","width":800}],"version":1,"width":1}],"branched_thread":"string","content":"Hello, how can I help you today?","created_at":"2024-01-01T00:00:00Z","has_replies":true,"id":"msg_0aBcDeFgHiJkLmNoPqRsTu","idempotency_key":"01234567-89ab-cdef-0123-456789abcdef","legacy_agent":"string","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","reactions":[{"payload":{"key":"value"},"type":"emoji_reaction","user":"string"}],"rendering_mode":"reply","replies":[{}],"replies_after_cursor":"string","replies_before_cursor":"string","reply_count":1,"reply_to":{},"sandbox":"string","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"string","user":"string"},"type":"object"},"sandbox":{"description":"ID of the developer sandbox this message belongs to (`dsb_...`). `null` for non-sandbox messages.","example":"string","type":"string"},"team":{"description":"ID of the team this message is scoped to (`tem_...`). `null` if the message is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this message belongs to (`thr_...`). `null` for messages not yet associated with a thread.","example":"string","type":"string"},"user":{"description":"The human user who sent this message. Returns a public ID string (`usr_...`) when the association is not preloaded, or an expanded user object when it is. `null` for messages sent by agents.","example":"string","type":"string"}},"required":["id"],"type":"object"},"thread_id":{"example":"string","type":"string"}},"type":"object"}}],"x-auth":["bearer"]},{"description":"Channel for real-time custom object collaboration.\n\nClients join `api:object:{object_id}` to receive the current object state\nand subscribe to field-level updates. Mutations are sent as key:value maps.","joins":[{"description":null,"name":"join_by_id","params":{"example":{"object_id":"string"},"properties":{"object_id":{"example":"string","type":"string"}},"required":["object_id"],"type":"object"},"pattern":"api:object:{object_id}","returns":{"type":"object"}},{"description":null,"name":"join_by_row_key","params":{"example":{"row_key":"string","schema_type":"string"},"properties":{"row_key":{"example":"string","type":"string"},"schema_type":{"example":"string","type":"string"}},"required":["row_key","schema_type"],"type":"object"},"pattern":"api:object:{schema_type}:{row_key}","returns":{"type":"object"}}],"messages":[{"description":null,"event":"save","params":{"properties":{},"type":"object"},"returns":{"description":"Empty acknowledgement payload returned by channel message handlers that produce no data. The wire envelope is `{\"status\": \"ok\", \"response\": {}}`.","properties":{},"type":"object"}},{"description":null,"event":"update_fields","params":{"example":{"fields":{}},"properties":{"fields":{"example":{},"type":"object"}},"required":["fields"],"type":"object"},"returns":{"description":"Response returned after updating one or more fields on a custom object. Confirms the object that was modified and the field values that were applied.","example":{"fields":{"key":"value"},"id":"cobj_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"fields":{"description":"Map of field names to their new values as applied during the update. Only the fields that were included in the update request are present.","example":{"key":"value"},"type":"object"},"id":{"description":"ID of the custom object that was updated (`cobj_...`).","example":"cobj_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["fields","id"],"type":"object"}}],"name":"ApiObjectChannel","pushes":[{"description":null,"event":"object_created","payload":{"example":{"fields":{},"id":"string"},"properties":{"fields":{"example":{},"type":"object"},"id":{"example":"string","type":"string"}},"type":"object"}},{"description":null,"event":"object_updated","payload":{"example":{"fields":{},"id":"string"},"properties":{"fields":{"example":{},"type":"object"},"id":{"example":"string","type":"string"}},"type":"object"}}],"x-auth":["bearer"]},{"description":"Phoenix channel for real-time activity feed updates.\n\nClients join a topic scoped to an agent or org and receive\n`new_entry` events as feed entries are created.\n\n## Topics\n\n  * `\"api:activity_feed:agent:{agent_user_id}\"` — entries for a specific agent\n  * `\"api:activity_feed:org:{org_id}\"` — entries for an entire org/tenant","joins":[{"description":"Join an agent-scoped activity feed","name":"join_agent","params":{"example":{"agent_id":"string"},"properties":{"agent_id":{"example":"string","type":"string"}},"required":["agent_id"],"type":"object"},"pattern":"api:activity_feed:agent:{agent_id}","returns":{"type":"object"}},{"description":"Join an org-scoped activity feed","name":"join_org","params":{"example":{"org_id":"string"},"properties":{"org_id":{"example":"string","type":"string"}},"required":["org_id"],"type":"object"},"pattern":"api:activity_feed:org:{org_id}","returns":{"type":"object"}}],"messages":[{"description":"List activity feed entries with cursor-based pagination","event":"list_entries","params":{"example":{"after_cursor":"string","before_cursor":"string","kind":"string","level":"string","limit":1},"properties":{"after_cursor":{"example":"string","type":"string"},"before_cursor":{"example":"string","type":"string"},"kind":{"example":"string","type":"string"},"level":{"example":"string","type":"string"},"limit":{"example":1,"type":"integer"}},"type":"object"},"returns":{"description":"A paginated list of activity feed entries returned by a feed query, with cursors for navigating backward and forward through results.","example":{"after_cursor":"string","before_cursor":"string","entries":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"has_more":true},"properties":{"after_cursor":{"description":"Opaque cursor to pass as `after` to retrieve the next page of entries. `null` when this is the last page.","example":"string","type":"string"},"before_cursor":{"description":"Opaque cursor to pass as `before` to retrieve the previous page of entries. `null` when this is the first page.","example":"string","type":"string"},"entries":{"description":"Array of activity feed entry objects for the current page, ordered by time descending.","example":[{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"}],"items":{"description":"A single event record in an activity feed, capturing what happened, who caused it, and which resources were involved.","example":{"agent":"agi_0aBcDeFgHiJkLmNoPqRsTu","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","attachments":[{}],"automation_run":"atr_0aBcDeFgHiJkLmNoPqRsTu","content":"The agent completed the task successfully.","correlation_id":"01234567-89ab-cdef-0123-456789abcdef","created_at":"2024-01-01T00:00:00Z","id":"afe_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_step","level":"info","metadata":{"key":"value"},"org":"org_0aBcDeFgHiJkLmNoPqRsTu","routine_run":"arr_0aBcDeFgHiJkLmNoPqRsTu","sandbox":"string","session_record":"ase_0aBcDeFgHiJkLmNoPqRsTu","team":"tem_0aBcDeFgHiJkLmNoPqRsTu","thread":"thr_0aBcDeFgHiJkLmNoPqRsTu","title":"Example Title","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"agent":{"description":"The agent that produced this event. Returns an agent ID (`agi_...`) by default, or an expanded agent object when the association is loaded. `null` if no agent is associated.","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","oneOf":[{"description":"An AI agent that can be configured with tools, routines, and skills, and invoked to handle conversations or tasks.","example":{"acl":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"app":"dap_0aBcDeFgHiJkLmNoPqRsTu","created_at":"2024-01-01T00:00:00Z","default_model":"claude-3-7-sonnet-latest","email":"user@example.com","id":"agi_0aBcDeFgHiJkLmNoPqRsTu","identity":"You are a helpful assistant that answers questions about ArchAstro products.","last_applied_template_config":"cfg_0aBcDeFgHiJkLmNoPqRsTu","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","originator":"deploy-pipeline","phone_number":"+15555550123","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","source_solution":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"team":"tem_0aBcDeFgHiJkLmNoPqRsTu","updated_at":"2024-01-01T00:00:00Z","user":"usr_0aBcDeFgHiJkLmNoPqRsTu"},"properties":{"acl":{"description":"Access control list for the agent. Contains a `grants` array where each entry specifies `principal_type`, `principal`, and `actions`. `null` when no ACL restrictions are applied and the agent is accessible to all members of its scope.","example":{"add":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"grants":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"remove":[{"principal":"string","principal_type":"user"}]},"properties":{"add":{"description":"Patch mode: grants to add or merge into the existing list. Cannot be combined with `grants`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"grants":{"description":"Replace mode: the complete new list of grants that replaces all existing entries. Send an empty array (`[]`) to clear all grants. Cannot be combined with `add` or `remove`.","example":[{"actions":["read","write"],"principal":"string","principal_type":"user"}],"items":{"description":"A single access-control grant that pairs a principal with the set of actions it is allowed to perform.","example":{"actions":["read","write"],"principal":"string","principal_type":"user"},"properties":{"actions":{"description":"Array of action strings the principal is permitted to perform, e.g. `[\"read\", \"write\"]`. Must contain at least one entry.","example":["read","write"],"items":{"type":"string"},"type":"array"},"principal":{"description":"The identifier of the principal. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`; omit entirely when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal receiving the grant. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["actions","principal_type"],"type":"object"},"type":"array"},"remove":{"description":"Patch mode: principals whose grants should be removed from the existing list. Cannot be combined with `grants`.","example":[{"principal":"string","principal_type":"user"}],"items":{"description":"Identifies a principal to be removed from an access-control list.","example":{"principal":"string","principal_type":"user"},"properties":{"principal":{"description":"The identifier of the principal to remove. A string ID for `\"user\"`, `\"team\"`, `\"org\"`, and `\"agent\"` types; one of `\"admin\"`, `\"member\"`, or `\"viewer\"` for `\"org_role\"`. Omit when `principal_type` is `\"everyone\"`.","example":"string","type":"string"},"principal_type":{"description":"The kind of principal to remove. One of `\"user\"`, `\"team\"`, `\"org\"`, `\"org_role\"`, `\"agent\"`, or `\"everyone\"`.","example":"user","type":"string"}},"required":["principal_type"],"type":"object"},"type":"array"}},"type":"object"},"app":{"description":"ID of the application that owns this agent (`dap_...`).","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"created_at":{"description":"When the agent was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"default_model":{"description":"Default LLM model identifier used by this agent when no model is specified at runtime (e.g. `\"claude-3-7-sonnet-latest\"`).","example":"claude-3-7-sonnet-latest","type":"string"},"email":{"description":"Email address provisioned for this agent. `null` if email delivery is not configured.","example":"user@example.com","type":"string"},"id":{"description":"Agent ID (`agi_...`).","example":"agi_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"identity":{"description":"System-level identity prompt that shapes the agent's persona and behavior.","example":"You are a helpful assistant that answers questions about ArchAstro products.","type":"string"},"last_applied_template_config":{"description":"ID of the AgentTemplate config (`cfg_...`) this agent was last provisioned or updated from. `null` for manually created agents.","example":"cfg_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"lookup_key":{"description":"Stable, user-defined identifier for this agent within the application. Unique per app.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata attached to the agent. Not interpreted by the platform.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-readable display name for the agent. `null` if not set.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this agent belongs to (`org_...`). `null` if the agent is not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the organization this agent belongs to. `null` when the agent is not org-scoped or when the org association was not preloaded.","example":"Example Name","type":"string"},"originator":{"description":"Free-form label identifying the source or author that created this agent (e.g. a username or pipeline name).","example":"deploy-pipeline","type":"string"},"phone_number":{"description":"Phone number provisioned for this agent. `null` if SMS is not configured.","example":"+15555550123","type":"string"},"sandbox":{"description":"ID of the sandbox environment this agent is scoped to (`dsb_...`). `null` in production deployments.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"source_solution":{"description":"Source Solution and AgentTemplate summary for agents provisioned from a Solution. Includes `upgrade_available`, `latest_version`, and `latest_solution` so you can render an upgrade badge without a separate dry-run call. `null` for hand-built agents and agents whose tracked template or parent Solution has been deleted. Populated only on single-agent GET responses, never on list endpoints.","example":{"solution":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"template":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"}},"properties":{"solution":{"description":"Summary of the parent Solution, including `upgrade_available`, `latest_version`, and `latest_solution` when a newer system-scoped version is available for the agent's org-scoped Solution.","example":{"category_keys":["string"],"created_at":"2024-01-01T00:00:00Z","description":"An example description.","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"Solution","latest_solution":"id_0aBcDeFgHiJkLmNoPqRsTu","latest_version":"1.0.0","lookup_key":"string","metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_logo":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"org_name":"Example Name","org_slug":"example-slug","owners":["string"],"readme_url":"https://example.com","solution_id":"01234567-89ab-cdef-0123-456789abcdef","solution_version":"1.2.0","tag_keys":["string"],"template_kind":"AgentTemplate","templates":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"updated_at":"2024-01-01T00:00:00Z","upgrade_available":true,"virtual_path":"string"},"properties":{"category_keys":{"description":"Category tag keys declared in the Solution body, used to group Solutions in the catalog. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"created_at":{"description":"When the Solution config was first imported (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Short tagline or summary declared in the Solution body, used as the card subhead in catalog UIs. `null` when the Solution body does not set one.","example":"An example description.","type":"string"},"id":{"description":"Solution config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Resource type. Always `\"Solution\"`.","example":"Solution","type":"string"},"latest_solution":{"description":"When `upgrade_available` is `true`, the system-scope Solution config ID (`cfg_...`) that should be used as the upgrade source. `null` otherwise.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"latest_version":{"description":"When `upgrade_available` is `true`, the higher system-scope `solution_version` available to upgrade to. `null` otherwise.","example":"1.0.0","type":"string"},"lookup_key":{"description":"The lookup key stored on the Solution config, if one was assigned during import. `null` when no lookup key was set.","example":"string","type":"string"},"metadata":{"description":"Arbitrary key-value metadata declared in the Solution body (e.g. category or display hints). Present as an empty object when the body declares none.","example":{"key":"value"},"type":"object"},"name":{"description":"Human-facing display name declared in the Solution body. `null` when the Solution body does not set one.","example":"Example Name","type":"string"},"org":{"description":"Organization ID (`org_...`) that owns this Solution config, when the Solution is scoped to a specific org. `null` for system-scope (app-level) Solutions.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_logo":{"description":"Canonical image-source object for the resolved `org`'s logo, used as the principal category section glyph. Carries the signed `url` plus a `refresh_url`. `null` when `org_slug` is `null` or the org has no logo.","example":{"file":"fil_0aBcDeFgHiJkLmNoPqRsTu","height":600,"media":"med_0aBcDeFgHiJkLmNoPqRsTu","mime_type":"application/json","refresh_url":"https://example.com","url":"https://example.com","width":800},"properties":{"file":{"description":"ID of the underlying storage file (`fil_...`). `null` when the image is not backed by a platform storage file.","example":"fil_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"height":{"description":"Height of the image in pixels. `null` if not known.","example":600,"type":"integer"},"media":{"description":"ID of the associated media record (`med_...`). `null` when the image is not linked to a media entity.","example":"med_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"mime_type":{"description":"MIME type of the image, e.g. `\"image/png\"` or `\"image/jpeg\"`. `null` if not known.","example":"application/json","type":"string"},"refresh_url":{"description":"Endpoint URL you can call to obtain a fresh signed `url` when the current one has expired. `null` if the URL does not require refreshing.","example":"https://example.com","type":"string"},"url":{"description":"Signed or public URL for downloading the image. May be time-limited; use `refresh_url` to obtain a new URL when this one expires.","example":"https://example.com","type":"string"},"width":{"description":"Width of the image in pixels. `null` if not known.","example":800,"type":"integer"}},"type":"object"},"org_name":{"description":"Display name of the resolved `org`. Pairs with `org_slug` as the principal catalog category's label. `null` when `org_slug` is `null`.","example":"Example Name","type":"string"},"org_slug":{"description":"Resolved slug of the Solution body's `org` (the publishing organization), when set and it resolves to a real org visible to the viewer. When present this is the Solution's principal catalog category key — clients group the Solution under this org ahead of `category_keys`. `null` when the body has no `org` or it doesn't resolve.","example":"example-slug","type":"string"},"owners":{"description":"Owner scopes this Solution appears under. Members: `\"system\"` (app-level system scope) and/or `\"org\"` (viewer's org scope).","example":["string"],"items":{"type":"string"},"type":"array"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded. `null` when the Solution has no README. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"solution_id":{"description":"Stable UUID declared in the Solution body, used to identify the same logical Solution across multiple installed copies and owner scopes. `null` when the body omits it.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"solution_version":{"description":"Semver string declared in the Solution body (e.g. `\"1.2.0\"`). `null` when the body does not declare a version.","example":"1.2.0","type":"string"},"tag_keys":{"description":"Freeform tag keys declared in the Solution body. An empty array when the body declares none.","example":["string"],"items":{"type":"string"},"type":"array"},"template_kind":{"description":"Wrapped template kind — `\"AgentTemplate\"`, `\"AutomationTemplate\"`, `\"AgentRoutineTemplate\"`, `\"AgentToolTemplate\"`, `\"AgentComputerTemplate\"`, or `\"SolutionTemplateRef\"` for ref-mode bundles.","example":"AgentTemplate","type":"string"},"templates":{"description":"Template configs bundled by this Solution, in declaration order — the first entry is the deployable template the Solution wraps; the rest are sibling templates the wrapped template references.","example":[{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"}],"items":{"description":"Identity and display metadata for a single template bundled by a Solution, used to represent each wrapped or sibling template at template granularity.","example":{"description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"AgentTemplate","lookup_key":"string","name":"Example Name","readme_url":"https://example.com","virtual_path":"string"},"properties":{"description":{"description":"Short prose blurb from the template body's `description:` field. `null` when the body doesn't set one. Used as the card subhead in the Library carousel.","example":"An example description.","type":"string"},"display_name":{"description":"Human-facing label from the template body's `display_name:` field. `null` when the body doesn't set one. Library carousels use this for the card title, falling back to a humanized `name`.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`). `null` for inline-only templates.","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Template config kind, or `SolutionTemplateRef` / `SolutionTemplatePath` when unresolved.","example":"AgentTemplate","type":"string"},"lookup_key":{"description":"Lookup key stamped on the template config at import time. `null` when no lookup key was assigned.","example":"string","type":"string"},"name":{"description":"Canonical name from the template body. For `AgentTemplate` this doubles as the human-facing label; for `AgentToolTemplate` it's the LLM-facing tool function identifier (snake_case); for `AgentRoutineTemplate` it's the routine identifier (kebab-case). Clients rendering carousels should prefer `display_name` and fall back to humanizing `name`.","example":"Example Name","type":"string"},"readme_url":{"description":"Relative path to the public README endpoint with a signed token already embedded, scoped to this template's bundled markdown asset. `null` when the Solution body's `templates[].readme_path` is unset for this entry. Token expires in 1 hour — refresh via `GET /api/v1/solutions/:solution`.","example":"https://example.com","type":"string"},"virtual_path":{"description":"Stable virtual path assigned to the template config. `null` when no virtual path was set.","example":"string","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"updated_at":{"description":"When the Solution config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"upgrade_available":{"description":"`true` when this Solution is installed at the viewer's org scope and the app-level system scope carries a higher `solution_version`. Always `false` for system-only rows.","example":true,"type":"boolean"},"virtual_path":{"description":"The stable virtual path assigned to this Solution config, used as the deduplication key when the same Solution appears under multiple owner scopes. `null` when unset.","example":"string","type":"string"}},"required":["id","kind","owners","templates","upgrade_available"],"type":"object"},"template":{"description":"Summary of the AgentTemplate config (`cfg_...`) the agent was last provisioned or updated from.","example":{"created_at":"2024-01-01T00:00:00Z","description":"An example description.","display_name":"Example Name","id":"id_0aBcDeFgHiJkLmNoPqRsTu","kind":"agent_tool_template","lookup_key":"string","name":"Example Name","updated_at":"2024-01-01T00:00:00Z","virtual_path":"string"},"properties":{"created_at":{"description":"When this template config was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description of the template from the config body. `null` if the current version has no `description` field.","example":"An example description.","type":"string"},"display_name":{"description":"Human-readable display name from the config body. `null` if the current version has no `display_name` field.","example":"Example Name","type":"string"},"id":{"description":"Template config ID (`cfg_...`).","example":"id_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"Config kind identifier for this template (e.g. `\"agent_tool_template\"`).","example":"agent_tool_template","type":"string"},"lookup_key":{"description":"Stable lookup key assigned to this template config. `null` if no lookup key is set.","example":"string","type":"string"},"name":{"description":"Template name as stored in the config body. `null` if the current version has no `name` field.","example":"Example Name","type":"string"},"updated_at":{"description":"When this template config was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"virtual_path":{"description":"Virtual filesystem path for this template config. `null` if not set.","example":"string","type":"string"}},"required":["id","kind"],"type":"object"}},"required":["solution","template"],"type":"object"},"team":{"description":"ID of the team that owns this agent (`tem_...`). `null` if the agent is not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"updated_at":{"description":"When the agent was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"ID of the user that owns this agent (`usr_...`). `null` if the agent is not user-scoped.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"}},"required":["id"],"type":"object"},{"type":"string"}]},"app":{"description":"ID of the application that produced this entry (`dap_...`). `null` if not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"attachments":{"description":"Array of attachment objects associated with this entry. Each attachment has a `type` field (e.g. `\"file\"`, `\"task\"`, `\"artifact\"`) and type-specific additional fields. Empty array when there are no attachments.","example":[{}],"items":{"type":"object"},"type":"array"},"automation_run":{"description":"ID of the automation run that produced this entry (`atr_...`). `null` if not produced by an automation run.","example":"atr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"content":{"description":"A longer explanation of the event rendered as Markdown. `null` if no additional content is available.","example":"The agent completed the task successfully.","type":"string"},"correlation_id":{"description":"An opaque string used to group related entries together. Entries sharing the same `correlation_id` belong to a single logical operation. `null` if not correlated.","example":"01234567-89ab-cdef-0123-456789abcdef","type":"string"},"created_at":{"description":"When this activity feed entry was created (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"id":{"description":"Activity feed entry ID (`afe_...`).","example":"afe_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"kind":{"description":"The type of event this entry represents, e.g. `\"agent_step\"` or `\"tool_call\"`. Determines how `title`, `content`, and `attachments` should be interpreted.","example":"agent_step","type":"string"},"level":{"description":"Severity level of the event. One of `\"info\"`, `\"warning\"`, or `\"error\"`. `null` if no severity is set.","example":"info","type":"string"},"metadata":{"description":"Arbitrary key-value metadata stored on this entry. Returns an empty object when no metadata is set.","example":{"key":"value"},"type":"object"},"org":{"description":"ID of the organization this entry belongs to (`org_...`). `null` if not org-scoped.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"routine_run":{"description":"ID of the agent routine run that produced this entry (`arr_...`). `null` if not produced by a routine run.","example":"arr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox":{"description":"Identifier of the sandbox environment this entry was generated in. `null` in production contexts.","example":"string","type":"string"},"session_record":{"description":"ID of the agent session record this entry belongs to (`ase_...`). `null` if not part of an agent session.","example":"ase_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"team":{"description":"ID of the team this entry is associated with (`tem_...`). `null` if not team-scoped.","example":"tem_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"thread":{"description":"ID of the thread this entry is associated with (`thr_...`). `null` if not linked to a thread.","example":"thr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"title":{"description":"A one-line human-readable summary of the event. `null` if the entry has no title.","example":"Example Title","type":"string"},"updated_at":{"description":"When this activity feed entry was last modified (ISO 8601).","example":"2024-01-01T00:00:00Z","format":"date-time","type":"string"},"user":{"description":"The user who triggered this event. Returns a user ID (`usr_...`) by default, or an expanded user object when the association is loaded. `null` if no user is associated.","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","oneOf":[{"description":"A platform user account. Represents a human or system actor that can own threads, belong to an organization, and interact with the API.","example":{"alias":"jdoe","app":"dap_0aBcDeFgHiJkLmNoPqRsTu","app_name":"Example Name","email":"user@example.com","id":"usr_0aBcDeFgHiJkLmNoPqRsTu","is_system_user":true,"metadata":{"key":"value"},"name":"Example Name","org":"org_0aBcDeFgHiJkLmNoPqRsTu","org_name":"Example Name","org_role":"member","sandbox":"dsb_0aBcDeFgHiJkLmNoPqRsTu","sandbox_name":"Example Name"},"properties":{"alias":{"description":"Short handle or alias for the user. `null` if not set.","example":"jdoe","type":"string"},"app":{"description":"ID of the app this user (and their access token) is scoped to (`dap_...`). `null` if the user is not scoped to an app.","example":"dap_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"app_name":{"description":"Display name of the user's app. `null` when the app association was not preloaded by the caller.","example":"Example Name","type":"string"},"email":{"description":"Email address of the user.","example":"user@example.com","type":"string"},"id":{"description":"User ID (`usr_...`).","example":"usr_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"is_system_user":{"description":"`true` if this account is an internal system user rather than a human. System users are created automatically by the platform.","example":true,"type":"boolean"},"metadata":{"description":"Arbitrary key-value metadata attached to the user. Defaults to an empty object.","example":{"key":"value"},"type":"object"},"name":{"description":"Full display name of the user. `null` if the user has not set a name.","example":"Example Name","type":"string"},"org":{"description":"ID of the organization this user belongs to (`org_...`). `null` if the user is not a member of any organization.","example":"org_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"org_name":{"description":"Display name of the user's organization. `null` when the user is not in an org, or when the org association was not preloaded by the caller.","example":"Example Name","type":"string"},"org_role":{"description":"Role of the user within their organization. One of `\"admin\"`, `\"member\"`, or `\"viewer\"`. `null` when the user is not a member of any organization.","example":"member","type":"string"},"sandbox":{"description":"ID of the sandbox environment this user is scoped to (`sbx_...`). `null` for production users.","example":"dsb_0aBcDeFgHiJkLmNoPqRsTu","type":"string"},"sandbox_name":{"description":"Display name of the user's sandbox environment. `null` for production users, or when the sandbox association was not preloaded by the caller.","example":"Example Name","type":"string"}},"required":["id"],"type":"object"},{"type":"string"}]}},"required":["id"],"type":"object"},"type":"array"},"has_more":{"description":"Whether additional entries exist beyond the current page. When `true`, use `after_cursor` to fetch the next page.","example":true,"type":"boolean"}},"required":["entries","has_more"],"type":"object"}}],"name":"ApiActivityFeedChannel","pushes":[{"description":null,"event":"new_entry","payload":{"example":{"entry":{}},"properties":{"entry":{"example":{},"type":"object"}},"type":"object"}}],"x-auth":["bearer"]}],"x-token-flows":{"login":{"constructor":"with_credentials","description":"Create a client by logging in with email/password","operation_name":"login","operation_tag":"auth","requires":["publishable_key"]},"refresh":{"description":"Refresh an expired access token","operation_name":"refresh","operation_tag":"auth"}}}