{
  "info": {
    "name": "Travila Platform API",
    "description": "Request scaffolds generated from the native OpenAPI specs that back\nhttps://docs.travila.ai — one folder per API capability.\n\n## Setup\n\nImport the companion environment (`travila-platform.postman_environment.json`) and set:\n\n- `baseUrl` — defaults to `https://api.travila.ai`\n- `apiKey` — a secret (`sk_...`) or publishable (`pk_...`) key. Sent as `X-API-Key` on every request.\n- `jwt` — a supported end-user identity token for your deployment. Required alongside a publishable key; leave empty when using a secret key alone.\n- `onBehalfOf` — a user id. Only needed when a secret key acts for a specific user; sent as `X-On-Behalf-Of` when non-empty.\n\nAuth is set once at the collection level, so every request inherits it. The one\npublic collection does not provide the console login or key-management flow.\nCheck the authentication guide for the caller and beneficiary required by each operation.\n\n## Request shape\n\nAll endpoints are `POST` with a JSON body. Follow each field schema: 64-bit\nintegers use JSON strings to preserve precision; enum values use their documented names.\n\nOperations with named JSON request examples use their exact published example values.\nOther bodies are generated from the spec schemas, with typed\nplaceholder (`\"<string>\"`, `\"<integer>\"`) rather than a valid request value. These are\nediting scaffolds, not validated requests. Replace them before sending and drop optional\nfields you do not need. For enum fields the placeholder does not name the allowed\nvalues; see the endpoint in the [API reference](https://docs.travila.ai/api) for\nthe accepted set.\n\nFree-form map fields (`payload`, `overrides`, `metadata`, …) are shown with a single\n`key_1` string entry. That is only a placeholder: they accept arbitrary keys, and the\nones typed as free-form accept nested JSON values, not just strings.\n\nSaved responses are included only for named examples in the OpenAPI source, preserving\ntheir status, media type and payload. They illustrate the contract; they are not\nobservations of a deployed service. See the API reference for complete response schemas.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "// Attach the optional headers only when their variables are set, so an unused",
          "// variable never sends an empty header.",
          "const jwt = pm.environment.get('jwt');",
          "if (jwt) pm.request.headers.upsert({key: 'Authorization', value: `Bearer ${jwt}`});",
          "",
          "const onBehalfOf = pm.environment.get('onBehalfOf');",
          "if (onBehalfOf) pm.request.headers.upsert({key: 'X-On-Behalf-Of', value: onBehalfOf});"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.travila.ai",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "LLM APIs",
      "description": "Manage conversations, messages, tools and semantic memory through the native conversation API. Voice operations require separately enabled voice service, provider credentials and an available voice agent. See [Voice availability](/managed-agents/voice-media). Native endpoints do not use the OpenAI wire protocol.\n\nUser-facing calls act for the authenticated beneficiary. A backend `sk_…` key uses an authorized `X-On-Behalf-Of` selection with `users:impersonate`; a client `pk_…` key accompanies that user’s JWT from the configured issuer. Never expose a secret key in a client. Raw identity headers and recipient IDs are not authentication. See [Authentication](/core-platform/identity-access/authentication).\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nA successful HTTP request can accept work that is still running, queued, awaiting client tools or failed. Inspect the run status and correlate it to the accepted `runId`; idle conversation state alone is not a terminal receipt for that request. Unknown or absent status means an unknown outcome, not success or proven ongoing execution.\n\n**Related guides:** [Conversations](/managed-agents/conversations), [Agent tools](/integrations/tools-connections), [Memory](/managed-agents/memory-knowledge), [Streaming availability](/managed-agents/conversations/streaming)\n\n<span id=\"field-naming\"></span>\n\n<span id=\"unknown-request-fields\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Threads",
          "description": {
            "content": "Conversation containers — create and list threads. See the [Conversations guide](/managed-agents/conversations) for thread lifecycle, async generation, and configuration.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a new conversation thread",
              "request": {
                "name": "Create a new conversation thread",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a conversation thread for the authenticated user.\n\n## Named request examples\n\n### conversations-createThread-request\n\nCreate a titled conversation; identity comes from authenticated context.\n\n```json\n\n{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-04-request\n\nGuide request for 2. Give this conversation access to the calendar. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationSettings\": {\n    \"mcpServers\": [\n      {\n        \"serverId\": \"pipedream:google_calendar\",\n        \"enabled\": true\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-02-request\n\nGuide request for Step 2: Start one support conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"My First Thread\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-01-request\n\nGuide request for Step 1: Create the support thread once. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Support Chat\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-build-agent-with-tools-01-request\n\nGuide request for Step 1: Describe the navigation your app can perform. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"defaultGenerationConfig\": {\n    \"clientTools\": [\n      {\n        \"name\": \"navigate_to\",\n        \"serverId\": \"client\",\n        \"description\": \"Navigate the app to a given screen\",\n        \"parametersJsonSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"screen\": {\n              \"type\": \"string\",\n              \"description\": \"Screen identifier, e.g. \\\"/settings\\\"\"\n            }\n          },\n          \"required\": [\n            \"screen\"\n          ]\n        }\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-01-request\n\nGuide request for Recipe: keep a research conversation on large-context candidates. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": 128000\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-02-request\n\nGuide request for Variant: keep a capability requirement for a long research thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": \"128000\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-01-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Nutrition check-in\",\n  \"activeProfileId\": \"nutrition_coach\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/create-thread",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "create-thread"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-createThread-response",
                  "originalRequest": {
                    "name": "Create a new conversation thread",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a conversation thread for the authenticated user.\n\n## Named request examples\n\n### conversations-createThread-request\n\nCreate a titled conversation; identity comes from authenticated context.\n\n```json\n\n{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-04-request\n\nGuide request for 2. Give this conversation access to the calendar. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationSettings\": {\n    \"mcpServers\": [\n      {\n        \"serverId\": \"pipedream:google_calendar\",\n        \"enabled\": true\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-02-request\n\nGuide request for Step 2: Start one support conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"My First Thread\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-01-request\n\nGuide request for Step 1: Create the support thread once. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Support Chat\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-build-agent-with-tools-01-request\n\nGuide request for Step 1: Describe the navigation your app can perform. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"defaultGenerationConfig\": {\n    \"clientTools\": [\n      {\n        \"name\": \"navigate_to\",\n        \"serverId\": \"client\",\n        \"description\": \"Navigate the app to a given screen\",\n        \"parametersJsonSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"screen\": {\n              \"type\": \"string\",\n              \"description\": \"Screen identifier, e.g. \\\"/settings\\\"\"\n            }\n          },\n          \"required\": [\n            \"screen\"\n          ]\n        }\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-01-request\n\nGuide request for Recipe: keep a research conversation on large-context candidates. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": 128000\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-02-request\n\nGuide request for Variant: keep a capability requirement for a long research thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": \"128000\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-01-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Nutrition check-in\",\n  \"activeProfileId\": \"nutrition_coach\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/create-thread",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "create-thread"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Thread created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"thread\": {\n    \"threadId\": \"example_123\",\n    \"title\": \"example\",\n    \"tags\": [\n      \"example\"\n    ],\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\",\n    \"externalId\": \"example_123\"\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-build-chat-assistant-json-02-response",
                  "originalRequest": {
                    "name": "Create a new conversation thread",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a conversation thread for the authenticated user.\n\n## Named request examples\n\n### conversations-createThread-request\n\nCreate a titled conversation; identity comes from authenticated context.\n\n```json\n\n{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-04-request\n\nGuide request for 2. Give this conversation access to the calendar. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationSettings\": {\n    \"mcpServers\": [\n      {\n        \"serverId\": \"pipedream:google_calendar\",\n        \"enabled\": true\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-02-request\n\nGuide request for Step 2: Start one support conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"My First Thread\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-01-request\n\nGuide request for Step 1: Create the support thread once. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Support Chat\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-build-agent-with-tools-01-request\n\nGuide request for Step 1: Describe the navigation your app can perform. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"defaultGenerationConfig\": {\n    \"clientTools\": [\n      {\n        \"name\": \"navigate_to\",\n        \"serverId\": \"client\",\n        \"description\": \"Navigate the app to a given screen\",\n        \"parametersJsonSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"screen\": {\n              \"type\": \"string\",\n              \"description\": \"Screen identifier, e.g. \\\"/settings\\\"\"\n            }\n          },\n          \"required\": [\n            \"screen\"\n          ]\n        }\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-01-request\n\nGuide request for Recipe: keep a research conversation on large-context candidates. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": 128000\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-02-request\n\nGuide request for Variant: keep a capability requirement for a long research thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": \"128000\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-01-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Nutrition check-in\",\n  \"activeProfileId\": \"nutrition_coach\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/create-thread",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "create-thread"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Thread created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"thread\": {\n    \"threadId\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n    \"title\": \"My First Thread\",\n    \"createdAt\": \"2026-04-23T16:34:02.673Z\",\n    \"updatedAt\": \"2026-04-23T16:34:02.673Z\"\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-json-01-response",
                  "originalRequest": {
                    "name": "Create a new conversation thread",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a conversation thread for the authenticated user.\n\n## Named request examples\n\n### conversations-createThread-request\n\nCreate a titled conversation; identity comes from authenticated context.\n\n```json\n\n{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-04-request\n\nGuide request for 2. Give this conversation access to the calendar. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationSettings\": {\n    \"mcpServers\": [\n      {\n        \"serverId\": \"pipedream:google_calendar\",\n        \"enabled\": true\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-02-request\n\nGuide request for Step 2: Start one support conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"My First Thread\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-01-request\n\nGuide request for Step 1: Create the support thread once. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Support Chat\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-build-agent-with-tools-01-request\n\nGuide request for Step 1: Describe the navigation your app can perform. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"defaultGenerationConfig\": {\n    \"clientTools\": [\n      {\n        \"name\": \"navigate_to\",\n        \"serverId\": \"client\",\n        \"description\": \"Navigate the app to a given screen\",\n        \"parametersJsonSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"screen\": {\n              \"type\": \"string\",\n              \"description\": \"Screen identifier, e.g. \\\"/settings\\\"\"\n            }\n          },\n          \"required\": [\n            \"screen\"\n          ]\n        }\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-01-request\n\nGuide request for Recipe: keep a research conversation on large-context candidates. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": 128000\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-02-request\n\nGuide request for Variant: keep a capability requirement for a long research thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Long research thread\",\n  \"defaultGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"minContextLength\": \"128000\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-01-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"title\": \"Nutrition check-in\",\n  \"activeProfileId\": \"nutrition_coach\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/create-thread",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "create-thread"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"title\": \"Travel planning\",\n  \"tags\": [\n    \"travel\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Thread created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"thread\": {\n    \"threadId\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List conversation threads",
              "request": {
                "name": "List conversation threads",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of conversation threads for the authenticated user,\nordered by `lastMessageAt` descending, then `threadId` descending for ties.\nChanges to `updatedAt` alone do not change the list position.\n\nPass `nextPageToken` as `pageToken` to continue after the last returned\nthread in that order. Pages read the current conversation projection;\nthey do not share a point-in-time snapshot. Concurrent message activity\ncan move a thread ahead of a continuation token, so a multi-page traversal\ncan miss threads that move while it is in progress.\n\n## Named request examples\n\n### conversations-listThreads-request\n\nList the authenticated user’s conversations with default paging.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/list-threads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "list-threads"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-listThreads-response",
                  "originalRequest": {
                    "name": "List conversation threads",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of conversation threads for the authenticated user,\nordered by `lastMessageAt` descending, then `threadId` descending for ties.\nChanges to `updatedAt` alone do not change the list position.\n\nPass `nextPageToken` as `pageToken` to continue after the last returned\nthread in that order. Pages read the current conversation projection;\nthey do not share a point-in-time snapshot. Concurrent message activity\ncan move a thread ahead of a continuation token, so a multi-page traversal\ncan miss threads that move while it is in progress.\n\n## Named request examples\n\n### conversations-listThreads-request\n\nList the authenticated user’s conversations with default paging.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/list-threads",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "list-threads"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Threads listed successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"threads\": [\n    {\n      \"threadId\": \"example_123\",\n      \"userId\": \"example_123\",\n      \"title\": \"example\",\n      \"tags\": [\n        \"example\"\n      ],\n      \"status\": \"CONVERSATION_STATUS_ACTIVE\",\n      \"messageCount\": \"1\",\n      \"lastMessagePreview\": \"example\",\n      \"lastMessageAt\": \"2026-09-16T12:00:00Z\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\",\n      \"externalId\": \"example_123\"\n    }\n  ],\n  \"nextPageToken\": \"example\"\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-build-chat-assistant-json-01-response",
                  "originalRequest": {
                    "name": "List conversation threads",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of conversation threads for the authenticated user,\nordered by `lastMessageAt` descending, then `threadId` descending for ties.\nChanges to `updatedAt` alone do not change the list position.\n\nPass `nextPageToken` as `pageToken` to continue after the last returned\nthread in that order. Pages read the current conversation projection;\nthey do not share a point-in-time snapshot. Concurrent message activity\ncan move a thread ahead of a continuation token, so a multi-page traversal\ncan miss threads that move while it is in progress.\n\n## Named request examples\n\n### conversations-listThreads-request\n\nList the authenticated user’s conversations with default paging.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/list-threads",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "list-threads"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Threads listed successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Messages",
          "description": {
            "content": "Send messages and trigger generation. See the [Conversations guide](/managed-agents/conversations) for the full message lifecycle and async polling recipe.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Send a message to a conversation",
              "request": {
                "name": "Send a message to a conversation",
                "description": {
                  "type": "text/markdown",
                  "content": "Sends a user message to the specified conversation thread. This appends the message to history and starts a generation workflow run. If a run is already in progress, behavior depends on the conversation's interrupt policy.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status interpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-scopes-permissions-01-request\n\nGuide request for The `users:impersonate` scope and `X-On-Behalf-Of`. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"conv_abc\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-05-request\n\nGuide request for 4. Ask about the page in a conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Read https://www.firecrawl.dev/pricing and summarize the pricing options. Link to the source.\"\n      }\n    ]\n  },\n  \"overrideMcpServers\": [\n    {\n      \"serverId\": \"custom:firecrawl\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-03-request\n\nGuide request for Send the message. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"What can you help me with?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-01-request\n\nGuide request for Step 1: Send once and read the same conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello, what can you help me with?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-02-request\n\nGuide request for Step 2: Send the customer’s first question. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"How do I reset my password?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-02-request\n\nGuide request for Recipe: summarize support notes with a catalog price filter. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"bulk-task-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this support note: The customer reset their password and can now sign in.\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3-flash-preview\"\n    ],\n    \"modelRoutingFilter\": {\n      \"maxPromptCost\": 0.000005,\n      \"maxCompletionCost\": 0.00002\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-03-request\n\nGuide request for Recipe: return a task summary after tool-assisted work. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"<your-thread-id>\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize the task we just discussed.\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\"\n    ],\n    \"responseFormat\": {\n      \"jsonSchema\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"summary\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"summary\"\n        ],\n        \"additionalProperties\": false\n      },\n      \"schemaName\": \"task_summary\",\n      \"validate\": true\n    },\n    \"modelRoutingFilter\": {\n      \"requiredParameters\": [\n        \"tools\",\n        \"response_format\"\n      ]\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-01-request\n\nGuide request for Step 1: send the image with its required capability. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"research-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_IMAGE_BASE64\",\n        \"content\": \"<base64_image>\"\n      },\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"What is in this image?\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"requiredInputModalities\": [\n        \"image\"\n      ]\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-02-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"thread_abc\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"...\"\n      }\n    ]\n  },\n  \"setActiveProfileId\": \"profile_escalation\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/send-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "send-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-sendMessage-response",
                  "originalRequest": {
                    "name": "Send a message to a conversation",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a user message to the specified conversation thread. This appends the message to history and starts a generation workflow run. If a run is already in progress, behavior depends on the conversation's interrupt policy.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status interpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-scopes-permissions-01-request\n\nGuide request for The `users:impersonate` scope and `X-On-Behalf-Of`. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"conv_abc\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-05-request\n\nGuide request for 4. Ask about the page in a conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Read https://www.firecrawl.dev/pricing and summarize the pricing options. Link to the source.\"\n      }\n    ]\n  },\n  \"overrideMcpServers\": [\n    {\n      \"serverId\": \"custom:firecrawl\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-03-request\n\nGuide request for Send the message. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"What can you help me with?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-01-request\n\nGuide request for Step 1: Send once and read the same conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello, what can you help me with?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-02-request\n\nGuide request for Step 2: Send the customer’s first question. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"How do I reset my password?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-02-request\n\nGuide request for Recipe: summarize support notes with a catalog price filter. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"bulk-task-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this support note: The customer reset their password and can now sign in.\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3-flash-preview\"\n    ],\n    \"modelRoutingFilter\": {\n      \"maxPromptCost\": 0.000005,\n      \"maxCompletionCost\": 0.00002\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-03-request\n\nGuide request for Recipe: return a task summary after tool-assisted work. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"<your-thread-id>\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize the task we just discussed.\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\"\n    ],\n    \"responseFormat\": {\n      \"jsonSchema\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"summary\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"summary\"\n        ],\n        \"additionalProperties\": false\n      },\n      \"schemaName\": \"task_summary\",\n      \"validate\": true\n    },\n    \"modelRoutingFilter\": {\n      \"requiredParameters\": [\n        \"tools\",\n        \"response_format\"\n      ]\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-01-request\n\nGuide request for Step 1: send the image with its required capability. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"research-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_IMAGE_BASE64\",\n        \"content\": \"<base64_image>\"\n      },\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"What is in this image?\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"requiredInputModalities\": [\n        \"image\"\n      ]\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-02-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"thread_abc\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"...\"\n      }\n    ]\n  },\n  \"setActiveProfileId\": \"profile_escalation\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message accepted and generation initiated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"example_123\",\n  \"interruptedPriorRun\": true\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-build-chat-assistant-json-03-response",
                  "originalRequest": {
                    "name": "Send a message to a conversation",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a user message to the specified conversation thread. This appends the message to history and starts a generation workflow run. If a run is already in progress, behavior depends on the conversation's interrupt policy.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status interpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-scopes-permissions-01-request\n\nGuide request for The `users:impersonate` scope and `X-On-Behalf-Of`. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"conv_abc\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-05-request\n\nGuide request for 4. Ask about the page in a conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Read https://www.firecrawl.dev/pricing and summarize the pricing options. Link to the source.\"\n      }\n    ]\n  },\n  \"overrideMcpServers\": [\n    {\n      \"serverId\": \"custom:firecrawl\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-03-request\n\nGuide request for Send the message. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"What can you help me with?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-01-request\n\nGuide request for Step 1: Send once and read the same conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello, what can you help me with?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-index-02-request\n\nGuide request for Step 2: Send the customer’s first question. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"How do I reset my password?\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-02-request\n\nGuide request for Recipe: summarize support notes with a catalog price filter. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"bulk-task-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this support note: The customer reset their password and can now sign in.\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3-flash-preview\"\n    ],\n    \"modelRoutingFilter\": {\n      \"maxPromptCost\": 0.000005,\n      \"maxCompletionCost\": 0.00002\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-examples-03-request\n\nGuide request for Recipe: return a task summary after tool-assisted work. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"<your-thread-id>\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize the task we just discussed.\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\"\n    ],\n    \"responseFormat\": {\n      \"jsonSchema\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"summary\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"summary\"\n        ],\n        \"additionalProperties\": false\n      },\n      \"schemaName\": \"task_summary\",\n      \"validate\": true\n    },\n    \"modelRoutingFilter\": {\n      \"requiredParameters\": [\n        \"tools\",\n        \"response_format\"\n      ]\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-model-controls-filtering-01-request\n\nGuide request for Step 1: send the image with its required capability. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"research-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_IMAGE_BASE64\",\n        \"content\": \"<base64_image>\"\n      },\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"What is in this image?\"\n      }\n    ]\n  },\n  \"overrideGenerationConfig\": {\n    \"models\": [\n      \"google/gemini-3.6-flash:nitro\",\n      \"anthropic/claude-sonnet-4.6:nitro\",\n      \"anthropic/claude-sonnet-5\"\n    ],\n    \"modelRoutingFilter\": {\n      \"requiredInputModalities\": [\n        \"image\"\n      ]\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-02-request\n\nGuide request for Variant: reuse the same assistant setup across conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"thread_abc\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"...\"\n      }\n    ]\n  },\n  \"setActiveProfileId\": \"profile_escalation\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message accepted and generation initiated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"64403669-5989-4ec3-ad9c-d84223f9679f\"\n}"
                }
              ]
            },
            {
              "name": "Append a message without generating",
              "request": {
                "name": "Append a message without generating",
                "description": {
                  "type": "text/markdown",
                  "content": "Appends a context message to the thread's history without starting generation for\nthis call. Use it to record a system note, an external event or other context that\nlater generations should see without triggering a reply.\n\nRead `conversation-state` to confirm the event: append assigns the next monotonic\nsequence immediately and publishes a message event. `ROLE_USER` opens a new user\nturn; other roles join the most recent user turn. Choose the role for how the event\nshould appear in history, without changing the fact it records.\n\nAppend bypasses the interrupt policy and pending queue. It can run while another\nturn is active, but that turn may already have assembled its provider request.\nThis call does not stop already running work or guarantee zero account-level cost:\nstorage and future model input can still cost money.\n\n## Named request examples\n\n### conversations-appendMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"message\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-04-request\n\nGuide request for Separate recipe: record an onboarding event without another reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"message\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"CONTEXT UPDATE: user completed onboarding.\"\n      }\n    ]\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/append-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "append-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"message\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-appendMessage-response",
                  "originalRequest": {
                    "name": "Append a message without generating",
                    "description": {
                      "type": "text/markdown",
                      "content": "Appends a context message to the thread's history without starting generation for\nthis call. Use it to record a system note, an external event or other context that\nlater generations should see without triggering a reply.\n\nRead `conversation-state` to confirm the event: append assigns the next monotonic\nsequence immediately and publishes a message event. `ROLE_USER` opens a new user\nturn; other roles join the most recent user turn. Choose the role for how the event\nshould appear in history, without changing the fact it records.\n\nAppend bypasses the interrupt policy and pending queue. It can run while another\nturn is active, but that turn may already have assembled its provider request.\nThis call does not stop already running work or guarantee zero account-level cost:\nstorage and future model input can still cost money.\n\n## Named request examples\n\n### conversations-appendMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"message\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-04-request\n\nGuide request for Separate recipe: record an onboarding event without another reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"message\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"CONTEXT UPDATE: user completed onboarding.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/append-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "append-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"message\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message appended",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Send a message and wait for the result",
              "request": {
                "name": "Send a message and wait for the result",
                "description": {
                  "type": "text/markdown",
                  "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "send-message-sync"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-sendMessageSync-response",
                  "originalRequest": {
                    "name": "Send a message and wait for the result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status returned; generation may still be active or waiting",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"example_123\",\n  \"interruptedPriorRun\": true,\n  \"messages\": [\n    {\n      \"role\": \"ROLE_SYSTEM\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Example text\",\n          \"cachePreferred\": true\n        }\n      ],\n      \"toolCalls\": [\n        {\n          \"id\": \"example_123\",\n          \"name\": \"example\",\n          \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n          \"serverId\": \"example_123\",\n          \"isClientTool\": true,\n          \"description\": \"example\",\n          \"approvedBy\": \"example\",\n          \"endReason\": \"example\"\n        }\n      ],\n      \"name\": \"example\",\n      \"timestamp\": \"2026-09-16T12:00:00Z\",\n      \"messageId\": \"example_123\",\n      \"annotations\": [\n        {\n          \"kind\": \"ANNOTATION_KIND_URL_CITATION\"\n        }\n      ],\n      \"sequence\": \"1\",\n      \"generatedBy\": \"example\",\n      \"usage\": {\n        \"promptTokens\": 1,\n        \"completionTokens\": 1,\n        \"totalTokens\": 1,\n        \"costEstimate\": 1,\n        \"isByok\": true\n      },\n      \"model\": \"example\",\n      \"generationContext\": {\n        \"languagePreference\": \"en-US\",\n        \"resolvedSystemPrompt\": \"Example text\",\n        \"profileId\": \"example_123\",\n        \"model\": \"example\",\n        \"promptSource\": \"PROMPT_SOURCE_CLIENT_OVERRIDE\",\n        \"profileVersion\": 1,\n        \"fragmentsVersion\": 1,\n        \"profileRenderFailed\": true,\n        \"resolvedPromptHash\": \"Example text\",\n        \"resolvedUserContext\": \"Example text\"\n      },\n      \"clientContext\": {},\n      \"feedback\": [\n        {\n          \"kind\": \"FEEDBACK_KIND_THUMB\",\n          \"thumbUp\": true,\n          \"reason\": \"example\",\n          \"ratedBy\": \"example\"\n        }\n      ],\n      \"sourceUserMessageId\": \"example_123\",\n      \"finishReason\": \"example\"\n    }\n  ],\n  \"status\": \"AGENT_STATUS_ACTIVE\",\n  \"aggregateUsage\": {\n    \"promptTokens\": 1,\n    \"completionTokens\": 1,\n    \"totalTokens\": 1,\n    \"costEstimate\": 1,\n    \"completionTokensDetails\": {\n      \"reasoningTokens\": 1,\n      \"imageTokens\": 1,\n      \"audioTokens\": 1\n    },\n    \"promptTokensDetails\": {\n      \"cachedTokens\": 1,\n      \"cacheWriteTokens\": 1,\n      \"audioTokens\": 1,\n      \"videoTokens\": 1\n    },\n    \"costDetails\": {\n      \"upstreamInferenceCost\": 1,\n      \"upstreamInferencePromptCost\": 1,\n      \"upstreamInferenceCompletionCost\": 1\n    },\n    \"isByok\": true\n  },\n  \"error\": {\n    \"code\": \"ERROR_CODE_CANCELLED\",\n    \"message\": \"example\",\n    \"isTerminal\": true,\n    \"details\": {}\n  },\n  \"pendingClientTools\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"argumentsJson\": {\n        \"example\": \"value\"\n      },\n      \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n      \"resultJson\": {\n        \"example\": \"value\"\n      },\n      \"executedAt\": \"2026-09-16T12:00:00Z\",\n      \"serverId\": \"example_123\",\n      \"isClientTool\": true,\n      \"description\": \"example\",\n      \"parametersJsonSchema\": {\n        \"example\": \"value\"\n      },\n      \"requiresApprovalAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedBy\": \"example\",\n      \"executionDuration\": \"1s\",\n      \"endReason\": \"example\",\n      \"clientToolDeadlineAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"clientToolCursor\": 1\n}"
                },
                {
                  "name": "cookbook-core-platform-scheduling-build-scheduled-agents-json-02-response",
                  "originalRequest": {
                    "name": "Send a message and wait for the result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status returned; generation may still be active or waiting",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"9d4c2e1f-...\",\n  \"status\": \"AGENT_STATUS_COMPLETED\",\n  \"messages\": [\n    {\n      \"role\": \"ROLE_ASSISTANT\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Here is your daily briefing…\"\n        }\n      ],\n      \"generatedBy\": \"9d4c2e1f-...\"\n    }\n  ],\n  \"aggregateUsage\": {\n    \"promptTokens\": 412,\n    \"completionTokens\": 88,\n    \"totalTokens\": 500\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-generation-json-04-response",
                  "originalRequest": {
                    "name": "Send a message and wait for the result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status returned; generation may still be active or waiting",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"9d4c...\",\n  \"status\": \"AGENT_STATUS_COMPLETED\",\n  \"messages\": [\n    {\n      \"role\": \"ROLE_ASSISTANT\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"…\"\n        }\n      ],\n      \"generatedBy\": \"9d4c...\"\n    }\n  ],\n  \"aggregateUsage\": {\n    \"promptTokens\": 412,\n    \"completionTokens\": 88,\n    \"totalTokens\": 500\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-generation-json-05-response",
                  "originalRequest": {
                    "name": "Send a message and wait for the result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status returned; generation may still be active or waiting",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"9d4c...\",\n  \"status\": \"AGENT_STATUS_FAILED\"\n}"
                },
                {
                  "name": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-json-02-response",
                  "originalRequest": {
                    "name": "Send a message and wait for the result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status returned; generation may still be active or waiting",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"64403669-5989-4ec3-ad9c-d84223f9679f\",\n  \"status\": \"AGENT_STATUS_AWAITING_CLIENT_TOOLS\",\n  \"clientToolCursor\": 1,\n  \"pendingClientTools\": [\n    {\n      \"id\": \"call_abc123\",\n      \"name\": \"navigate_to\",\n      \"argumentsJson\": {\n        \"screen\": \"/profile\"\n      },\n      \"isClientTool\": true,\n      \"clientToolDeadlineAt\": \"2026-08-10T10:04:11Z\"\n    }\n  ]\n}"
                },
                {
                  "name": "cookbook-managed-agents-delegation-approvals-using-tools-json-02-response",
                  "originalRequest": {
                    "name": "Send a message and wait for the result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a message and waits for a bounded interval, returning generated messages\ninline when available. Use it when you need the assistant reply in the HTTP\nresponse, such as structured output or a classification.\n\nInspect [`status`](/api/conversations/send-message-sync#response-field-status) even\non HTTP 200: a queued message, a pause for client tools or the bounded wait ending\ncan return before the run finishes. A transport timeout or unknown status does\nnot authorize resending the message; reconcile the accepted run.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-sendMessageSync-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-01-request\n\nGuide request for Step 3: Drive an agent turn from the callback. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Generate the daily briefing.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-01-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-generation-03-request\n\nGuide request for Separate recipe: wait for a backend summary in the response. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Summarize this thread as JSON.\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-03-request\n\nGuide request for Step 1: Receive the complete navigation call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Navigate to my profile.\"\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/send-message-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "send-message-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"userMessage\": {\n    \"role\": \"ROLE_USER\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Hello\"\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status returned; generation may still be active or waiting",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"cf9f08e7-4486-41e1-bac1-b9428d1aeb85\",\n  \"status\": \"AGENT_STATUS_AWAITING_CLIENT_TOOLS\",\n  \"clientToolCursor\": 1,\n  \"pendingClientTools\": [\n    {\n      \"id\": \"call_306135\",\n      \"name\": \"navigate_to\",\n      \"argumentsJson\": {\n        \"screen\": \"/profile\"\n      },\n      \"isClientTool\": true,\n      \"clientToolDeadlineAt\": \"2026-09-02T06:43:24.304Z\"\n    }\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Conversations",
          "description": {
            "content": "Conversation state, settings, and context management. See the [Conversations guide](/managed-agents/conversations).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Update conversation settings",
              "request": {
                "name": "Update conversation settings",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the conversation's behavior settings.\n\n## Named request examples\n\n### conversations-updateSettings-request\n\nReplace settings on an existing conversation; include every setting you want to retain.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"settings\": {\n    \"maxLoops\": 6,\n    \"maxParallelTools\": 3\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-index-02-request\n\nGuide request for 2. Enable research for the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"thread_abc123\",\n  \"settings\": {\n    \"mcpServers\": [\n      {\n        \"serverId\": \"built-in:tavily\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-02-request\n\nGuide request for Step 2: Keep one unresolved turn at a time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"settings\": {\n    \"interruptPolicy\": \"INTERRUPT_POLICY_REJECT_NEW\",\n    \"maxLoops\": 4\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/update-settings",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "update-settings"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"settings\": {\n    \"maxLoops\": 6,\n    \"maxParallelTools\": 3\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-updateSettings-response",
                  "originalRequest": {
                    "name": "Update conversation settings",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the conversation's behavior settings.\n\n## Named request examples\n\n### conversations-updateSettings-request\n\nReplace settings on an existing conversation; include every setting you want to retain.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"settings\": {\n    \"maxLoops\": 6,\n    \"maxParallelTools\": 3\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-index-02-request\n\nGuide request for 2. Enable research for the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"thread_abc123\",\n  \"settings\": {\n    \"mcpServers\": [\n      {\n        \"serverId\": \"built-in:tavily\"\n      }\n    ]\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-02-request\n\nGuide request for Step 2: Keep one unresolved turn at a time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"settings\": {\n    \"interruptPolicy\": \"INTERRUPT_POLICY_REJECT_NEW\",\n    \"maxLoops\": 4\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/update-settings",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "update-settings"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"settings\": {\n    \"maxLoops\": 6,\n    \"maxParallelTools\": 3\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Settings updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"settings\": {\n    \"interruptPolicy\": \"INTERRUPT_POLICY_REJECT_NEW\",\n    \"maxLoops\": 1,\n    \"maxParallelTools\": 1,\n    \"mcpServers\": [\n      {\n        \"serverId\": \"example_123\",\n        \"enabled\": true,\n        \"priority\": 1,\n        \"allowlistToolPatterns\": [\n          \"example\"\n        ],\n        \"blocklistToolPatterns\": [\n          \"example\"\n        ]\n      }\n    ],\n    \"toolPolicy\": {\n      \"requireApprovalToolNamePatterns\": [\n        \"example\"\n      ],\n      \"requireApprovalServerIds\": [\n        \"example_123\"\n      ],\n      \"autoApproveToolNamePatterns\": [\n        \"example\"\n      ],\n      \"autoApproveServerIds\": [\n        \"example_123\"\n      ],\n      \"approvalMode\": \"APPROVAL_MODE_MIXED\",\n      \"clientToolMode\": \"CLIENT_TOOL_MODE_MIXED\",\n      \"approvalTimeoutMs\": 1,\n      \"failOnApprovalTimeoutToolNamePatterns\": [\n        \"example\"\n      ],\n      \"stableSortByCallIndexOnTie\": true,\n      \"maxParallelToolCalls\": 1,\n      \"maxToolCallsPerLoop\": 1,\n      \"maxTotalToolCalls\": 1,\n      \"retriableToolNamePatterns\": [\n        \"example\"\n      ],\n      \"maxRetries\": 1,\n      \"retryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"nonRetryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"clientToolTimeoutMs\": 1,\n      \"failureMode\": \"FAILURE_MODE_CONTINUE\"\n    },\n    \"promptVariables\": {\n      \"example\": \"value\"\n    }\n  }\n}"
                }
              ]
            },
            {
              "name": "Update prompt variables",
              "request": {
                "name": "Update prompt variables",
                "description": {
                  "type": "text/markdown",
                  "content": "Agent Profiles: merges prompt variables into the thread for late-binding. The variables are re-rendered into the active profile's prompt on the next turn. Returns the merged conversation settings.\n\n### Prompt-variable update masks\n\nWhen you supply [`updateMask`](/api/conversations/update-prompt-variables#request-field-updatemask):\n\n- **Masked keys are authoritative.** A masked key whose value is `null` or absent **clears** that variable.\n- **Unmasked keys are untouched.** Variables not listed in the mask keep their current values, even if you include them in the payload.\n\nWithout [`updateMask`](/api/conversations/update-prompt-variables#request-field-updatemask):\n\n- Supplied keys overwrite or add.\n- Null or empty values clear the variable.\n- Keys you omit are not touched.\n\n## Named request examples\n\n### conversations-updatePromptVariables-request\n\nMerge a destination variable into an existing conversation’s prompt variables.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"variables\": {\n    \"destination\": \"Paris\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-03-request\n\nGuide request for Variant: personalize the profile for this customer. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"variables\": {\n    \"userName\": \"Jane\",\n    \"planTier\": \"pro\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-03-request\n\nGuide request for Variant: personalize the profile for this customer. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"variables\": {\n    \"planTier\": \"enterprise\"\n  },\n  \"updateMask\": \"planTier\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/update-prompt-variables",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "update-prompt-variables"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"variables\": {\n    \"destination\": \"Paris\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-updatePromptVariables-response",
                  "originalRequest": {
                    "name": "Update prompt variables",
                    "description": {
                      "type": "text/markdown",
                      "content": "Agent Profiles: merges prompt variables into the thread for late-binding. The variables are re-rendered into the active profile's prompt on the next turn. Returns the merged conversation settings.\n\n### Prompt-variable update masks\n\nWhen you supply [`updateMask`](/api/conversations/update-prompt-variables#request-field-updatemask):\n\n- **Masked keys are authoritative.** A masked key whose value is `null` or absent **clears** that variable.\n- **Unmasked keys are untouched.** Variables not listed in the mask keep their current values, even if you include them in the payload.\n\nWithout [`updateMask`](/api/conversations/update-prompt-variables#request-field-updatemask):\n\n- Supplied keys overwrite or add.\n- Null or empty values clear the variable.\n- Keys you omit are not touched.\n\n## Named request examples\n\n### conversations-updatePromptVariables-request\n\nMerge a destination variable into an existing conversation’s prompt variables.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"variables\": {\n    \"destination\": \"Paris\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-03-request\n\nGuide request for Variant: personalize the profile for this customer. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"variables\": {\n    \"userName\": \"Jane\",\n    \"planTier\": \"pro\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-json-03-request\n\nGuide request for Variant: personalize the profile for this customer. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"variables\": {\n    \"planTier\": \"enterprise\"\n  },\n  \"updateMask\": \"planTier\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/update-prompt-variables",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "update-prompt-variables"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"variables\": {\n    \"destination\": \"Paris\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Prompt variables merged",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"settings\": {\n    \"interruptPolicy\": \"INTERRUPT_POLICY_REJECT_NEW\",\n    \"maxLoops\": 1,\n    \"maxParallelTools\": 1,\n    \"mcpServers\": [\n      {\n        \"serverId\": \"example_123\",\n        \"enabled\": true,\n        \"priority\": 1,\n        \"allowlistToolPatterns\": [\n          \"example\"\n        ],\n        \"blocklistToolPatterns\": [\n          \"example\"\n        ]\n      }\n    ],\n    \"toolPolicy\": {\n      \"requireApprovalToolNamePatterns\": [\n        \"example\"\n      ],\n      \"requireApprovalServerIds\": [\n        \"example_123\"\n      ],\n      \"autoApproveToolNamePatterns\": [\n        \"example\"\n      ],\n      \"autoApproveServerIds\": [\n        \"example_123\"\n      ],\n      \"approvalMode\": \"APPROVAL_MODE_MIXED\",\n      \"clientToolMode\": \"CLIENT_TOOL_MODE_MIXED\",\n      \"approvalTimeoutMs\": 1,\n      \"failOnApprovalTimeoutToolNamePatterns\": [\n        \"example\"\n      ],\n      \"stableSortByCallIndexOnTie\": true,\n      \"maxParallelToolCalls\": 1,\n      \"maxToolCallsPerLoop\": 1,\n      \"maxTotalToolCalls\": 1,\n      \"retriableToolNamePatterns\": [\n        \"example\"\n      ],\n      \"maxRetries\": 1,\n      \"retryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"nonRetryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"clientToolTimeoutMs\": 1,\n      \"failureMode\": \"FAILURE_MODE_CONTINUE\"\n    },\n    \"promptVariables\": {\n      \"example\": \"value\"\n    }\n  }\n}"
                }
              ]
            },
            {
              "name": "Update default generation config",
              "request": {
                "name": "Update default generation config",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the default LLM generation configuration for a conversation. These defaults apply to every subsequent SendMessage unless overridden per-request.\n\n## Named request examples\n\n### conversations-updateDefaultGenerationConfig-request\n\nReplace the default generation configuration on an existing conversation.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"defaultGenerationConfig\": {\n    \"languagePreference\": \"en-US\",\n    \"maxOutputTokens\": 512\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-01-request\n\nGuide request for Step 1: Set the model and answer length. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"defaultGenerationConfig\": {\n    \"model\": \"anthropic/claude-sonnet-5\",\n    \"temperature\": 0.7,\n    \"maxOutputTokens\": 2048,\n    \"topP\": 0.9\n  }\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-json-02-request\n\nGuide request for Step 4: Include relevant memory in later replies. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"conv_abc\",\n  \"defaultGenerationConfig\": {\n    \"mem0\": {\n      \"enabled\": true,\n      \"searchTopK\": 5,\n      \"searchThreshold\": 0.3,\n      \"injectAsSystemContext\": true,\n      \"injectMemoryTimestamps\": true\n    }\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/update-default-generation-config",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "update-default-generation-config"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"defaultGenerationConfig\": {\n    \"languagePreference\": \"en-US\",\n    \"maxOutputTokens\": 512\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-updateDefaultGenerationConfig-response",
                  "originalRequest": {
                    "name": "Update default generation config",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the default LLM generation configuration for a conversation. These defaults apply to every subsequent SendMessage unless overridden per-request.\n\n## Named request examples\n\n### conversations-updateDefaultGenerationConfig-request\n\nReplace the default generation configuration on an existing conversation.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"defaultGenerationConfig\": {\n    \"languagePreference\": \"en-US\",\n    \"maxOutputTokens\": 512\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-configuration-01-request\n\nGuide request for Step 1: Set the model and answer length. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"defaultGenerationConfig\": {\n    \"model\": \"anthropic/claude-sonnet-5\",\n    \"temperature\": 0.7,\n    \"maxOutputTokens\": 2048,\n    \"topP\": 0.9\n  }\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-json-02-request\n\nGuide request for Step 4: Include relevant memory in later replies. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"conv_abc\",\n  \"defaultGenerationConfig\": {\n    \"mem0\": {\n      \"enabled\": true,\n      \"searchTopK\": 5,\n      \"searchThreshold\": 0.3,\n      \"injectAsSystemContext\": true,\n      \"injectMemoryTimestamps\": true\n    }\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/update-default-generation-config",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "update-default-generation-config"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"defaultGenerationConfig\": {\n    \"languagePreference\": \"en-US\",\n    \"maxOutputTokens\": 512\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Generation config updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"defaultGenerationConfig\": {\n    \"model\": \"example\",\n    \"models\": [\n      \"example\"\n    ],\n    \"systemPrompt\": \"Example text\",\n    \"modelRoutingFilter\": {\n      \"minContextLength\": \"1\",\n      \"minMaxCompletionTokens\": \"1\",\n      \"requiredInputModalities\": [\n        \"example\"\n      ],\n      \"requiredOutputModalities\": [\n        \"example\"\n      ],\n      \"maxPromptCost\": 1,\n      \"maxCompletionCost\": 1,\n      \"excludeModerated\": true,\n      \"requiredParameters\": [\n        \"example\"\n      ]\n    },\n    \"provider\": {\n      \"order\": [\n        \"example\"\n      ],\n      \"allowFallbacks\": true,\n      \"requireParameters\": true,\n      \"dataCollection\": \"DATA_COLLECTION_MODE_ALLOW\",\n      \"zdr\": true,\n      \"only\": [\n        \"example\"\n      ],\n      \"ignore\": [\n        \"example\"\n      ],\n      \"quantizations\": [\n        \"example\"\n      ],\n      \"sort\": \"PROVIDER_SORT_PRICE\",\n      \"enforceDistillableText\": true\n    },\n    \"reasoning\": {\n      \"effort\": \"EFFORT_HIGH\",\n      \"maxTokens\": 1,\n      \"exclude\": true,\n      \"includeReasoningHistory\": true\n    },\n    \"usage\": {\n      \"include\": true\n    },\n    \"transforms\": [\n      \"example\"\n    ],\n    \"tools\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"serverId\": \"example_123\",\n        \"tags\": [\n          \"example\"\n        ],\n        \"documentationUrl\": \"https://example.com/resource\"\n      }\n    ],\n    \"toolChoice\": {\n      \"kind\": \"TOOL_CHOICE_KIND_AUTO\",\n      \"specificToolName\": \"example\"\n    },\n    \"clientTools\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"serverId\": \"example_123\",\n        \"tags\": [\n          \"example\"\n        ],\n        \"documentationUrl\": \"https://example.com/resource\"\n      }\n    ],\n    \"toolPolicy\": {\n      \"requireApprovalToolNamePatterns\": [\n        \"example\"\n      ],\n      \"requireApprovalServerIds\": [\n        \"example_123\"\n      ],\n      \"autoApproveToolNamePatterns\": [\n        \"example\"\n      ],\n      \"autoApproveServerIds\": [\n        \"example_123\"\n      ],\n      \"approvalMode\": \"APPROVAL_MODE_MIXED\",\n      \"clientToolMode\": \"CLIENT_TOOL_MODE_MIXED\",\n      \"approvalTimeoutMs\": 1,\n      \"failOnApprovalTimeoutToolNamePatterns\": [\n        \"example\"\n      ],\n      \"stableSortByCallIndexOnTie\": true,\n      \"maxParallelToolCalls\": 1,\n      \"maxToolCallsPerLoop\": 1,\n      \"maxTotalToolCalls\": 1,\n      \"retriableToolNamePatterns\": [\n        \"example\"\n      ],\n      \"maxRetries\": 1,\n      \"retryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"nonRetryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"clientToolTimeoutMs\": 1,\n      \"failureMode\": \"FAILURE_MODE_CONTINUE\"\n    },\n    \"temperature\": 1,\n    \"topP\": 1,\n    \"maxOutputTokens\": 1,\n    \"frequencyPenalty\": 1,\n    \"presencePenalty\": 1,\n    \"stopSequences\": [\n      \"example\"\n    ],\n    \"seed\": \"1\",\n    \"responseFormat\": {\n      \"jsonObject\": true,\n      \"schemaName\": \"example\",\n      \"validate\": true,\n      \"maxValidationRetries\": 1,\n      \"responseHealing\": true\n    },\n    \"allowParallelToolCalls\": true,\n    \"topK\": 1,\n    \"repetitionPenalty\": 1,\n    \"logitBias\": {},\n    \"topLogprobs\": 1,\n    \"minP\": 1,\n    \"topA\": 1,\n    \"user\": \"example\",\n    \"modalities\": [\n      \"MODALITY_TEXT\"\n    ],\n    \"plugins\": [\n      {\n        \"id\": \"example_123\"\n      }\n    ],\n    \"languagePreference\": \"en-US\",\n    \"timeAware\": {\n      \"includeCurrentTime\": true,\n      \"includeMessageTimestamps\": true,\n      \"includeFileTimestamps\": true,\n      \"timezone\": \"example\",\n      \"timestampFormat\": \"\"\n    },\n    \"turnContext\": {\n      \"enabled\": true,\n      \"includeToolGuidance\": true,\n      \"format\": \"minimal\"\n    },\n    \"mem0\": {\n      \"enabled\": true,\n      \"searchTopK\": 1,\n      \"searchThreshold\": 1,\n      \"injectAsSystemContext\": true,\n      \"searchQueryOverride\": \"Example text\",\n      \"enableRerank\": true,\n      \"addMemoriesAsync\": true,\n      \"customExtractionPrompt\": \"Example text\",\n      \"enableGraph\": true,\n      \"agentIdOverride\": \"example_123\",\n      \"exposeAsMcpTool\": true,\n      \"includeAssistantMessages\": true,\n      \"injectMemoryTimestamps\": true\n    },\n    \"requestTimeoutSeconds\": 1,\n    \"fileResolution\": {\n      \"failureMode\": \"FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION\"\n    },\n    \"clearTools\": true\n  }\n}"
                }
              ]
            },
            {
              "name": "Update context management settings",
              "request": {
                "name": "Update context management settings",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates how the conversation selects and compacts context for later generations.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy\nselection and outcome handling.\n\n## Named request examples\n\n### conversations-updateContextManagementSettings-request\n\nUpdate the window size for an existing conversation already using the windowing strategy.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_WINDOWING\",\n    \"windowingConfig\": {\n      \"maxMessages\": 50\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-01-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_COMPACTION\",\n    \"compactionConfig\": {\n      \"mode\": \"COMPACTION_MODE_SYNC\",\n      \"threshold\": {\n        \"percentage\": 80\n      },\n      \"preserveRecent\": 10\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-04-request\n\nGuide request for Variant: omit a file or tool result that later replies no longer need. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_COMPACTION\",\n    \"selectiveExclusionConfig\": {\n      \"excludeToolResults\": true,\n      \"excludeImages\": true\n    }\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/update-context-management-settings",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "update-context-management-settings"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_WINDOWING\",\n    \"windowingConfig\": {\n      \"maxMessages\": 50\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-updateContextManagementSettings-response",
                  "originalRequest": {
                    "name": "Update context management settings",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates how the conversation selects and compacts context for later generations.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy\nselection and outcome handling.\n\n## Named request examples\n\n### conversations-updateContextManagementSettings-request\n\nUpdate the window size for an existing conversation already using the windowing strategy.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_WINDOWING\",\n    \"windowingConfig\": {\n      \"maxMessages\": 50\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-01-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_COMPACTION\",\n    \"compactionConfig\": {\n      \"mode\": \"COMPACTION_MODE_SYNC\",\n      \"threshold\": {\n        \"percentage\": 80\n      },\n      \"preserveRecent\": 10\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-04-request\n\nGuide request for Variant: omit a file or tool result that later replies no longer need. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_COMPACTION\",\n    \"selectiveExclusionConfig\": {\n      \"excludeToolResults\": true,\n      \"excludeImages\": true\n    }\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/update-context-management-settings",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "update-context-management-settings"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_WINDOWING\",\n    \"windowingConfig\": {\n      \"maxMessages\": 50\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Context management settings updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_COMPACTION\",\n    \"compactionConfig\": {\n      \"mode\": \"COMPACTION_MODE_SYNC\",\n      \"preserveRecent\": 1\n    },\n    \"windowingConfig\": {\n      \"maxMessages\": 1\n    },\n    \"selectiveExclusionConfig\": {\n      \"excludeToolResults\": true,\n      \"excludeImages\": true,\n      \"excludeFiles\": true,\n      \"excludeReasoning\": true\n    }\n  }\n}"
                }
              ]
            },
            {
              "name": "Compact a conversation",
              "request": {
                "name": "Compact a conversation",
                "description": {
                  "type": "text/markdown",
                  "content": "Triggers context compaction, summarizing older conversation messages. The trigger\nestimate can differ from the next request's actual size, especially after changing\nprompts or tools. Leave room below the model limit and handle context-limit errors.\n\nWhen configured for asynchronous compaction, this call returns a pending result\nimmediately. Use the returned `compactionId` to inspect the completed record in\n`conversation-state`'s `compactions` array. Compaction can still delay other messages\nin the conversation; asynchronous acceptance does not guarantee uninterrupted\nconcurrent messaging.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy\nselection and outcome handling.\n\n## Named request examples\n\n### conversations-compactConversation-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-02-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/compact-conversation",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "compact-conversation"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-compactConversation-response",
                  "originalRequest": {
                    "name": "Compact a conversation",
                    "description": {
                      "type": "text/markdown",
                      "content": "Triggers context compaction, summarizing older conversation messages. The trigger\nestimate can differ from the next request's actual size, especially after changing\nprompts or tools. Leave room below the model limit and handle context-limit errors.\n\nWhen configured for asynchronous compaction, this call returns a pending result\nimmediately. Use the returned `compactionId` to inspect the completed record in\n`conversation-state`'s `compactions` array. Compaction can still delay other messages\nin the conversation; asynchronous acceptance does not guarantee uninterrupted\nconcurrent messaging.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy\nselection and outcome handling.\n\n## Named request examples\n\n### conversations-compactConversation-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-02-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/compact-conversation",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "compact-conversation"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Compaction completed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"compactionId\": \"example_123\",\n  \"tokensBefore\": 1,\n  \"tokensAfter\": 1,\n  \"tokensSaved\": 1,\n  \"durationMs\": \"1\",\n  \"status\": \"COMPACTION_STATUS_PENDING\"\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-context-management-json-01-response",
                  "originalRequest": {
                    "name": "Compact a conversation",
                    "description": {
                      "type": "text/markdown",
                      "content": "Triggers context compaction, summarizing older conversation messages. The trigger\nestimate can differ from the next request's actual size, especially after changing\nprompts or tools. Leave room below the model limit and handle context-limit errors.\n\nWhen configured for asynchronous compaction, this call returns a pending result\nimmediately. Use the returned `compactionId` to inspect the completed record in\n`conversation-state`'s `compactions` array. Compaction can still delay other messages\nin the conversation; asynchronous acceptance does not guarantee uninterrupted\nconcurrent messaging.\n\nSee [Context and compaction](/api/conversations/context-and-compaction) for strategy\nselection and outcome handling.\n\n## Named request examples\n\n### conversations-compactConversation-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-02-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/compact-conversation",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "compact-conversation"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Compaction completed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"compactionId\": \"cmp_a1b2c3d4\",\n  \"tokensBefore\": 48211,\n  \"tokensAfter\": 604,\n  \"tokensSaved\": 47607,\n  \"durationMs\": \"4120\",\n  \"status\": \"COMPACTION_STATUS_COMPLETED\"\n}"
                }
              ]
            },
            {
              "name": "Get full conversation state",
              "request": {
                "name": "Get full conversation state",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the complete conversation state. An unknown or non-owned `externalId`\nreturns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or\nqueued request completed. Reconcile the original `runId` and its outcome before\nretrying an accepted send.\n\n## Named request examples\n\n### conversations-getConversationState-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-04-request\n\nGuide request for Poll conversation state. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-03-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/conversation-state",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "conversation-state"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-getConversationState-response",
                  "originalRequest": {
                    "name": "Get full conversation state",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the complete conversation state. An unknown or non-owned `externalId`\nreturns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or\nqueued request completed. Reconcile the original `runId` and its outcome before\nretrying an accepted send.\n\n## Named request examples\n\n### conversations-getConversationState-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-04-request\n\nGuide request for Poll conversation state. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-03-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/conversation-state",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "conversation-state"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conversation state returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageHistory\": [\n    {\n      \"role\": \"ROLE_SYSTEM\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Example text\",\n          \"cachePreferred\": true\n        }\n      ],\n      \"toolCalls\": [\n        {\n          \"id\": \"example_123\",\n          \"name\": \"example\",\n          \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n          \"serverId\": \"example_123\",\n          \"isClientTool\": true,\n          \"description\": \"example\",\n          \"approvedBy\": \"example\",\n          \"endReason\": \"example\"\n        }\n      ],\n      \"name\": \"example\",\n      \"timestamp\": \"2026-09-16T12:00:00Z\",\n      \"messageId\": \"example_123\",\n      \"annotations\": [\n        {\n          \"kind\": \"ANNOTATION_KIND_URL_CITATION\"\n        }\n      ],\n      \"sequence\": \"1\",\n      \"generatedBy\": \"example\",\n      \"usage\": {\n        \"promptTokens\": 1,\n        \"completionTokens\": 1,\n        \"totalTokens\": 1,\n        \"costEstimate\": 1,\n        \"isByok\": true\n      },\n      \"model\": \"example\",\n      \"generationContext\": {\n        \"languagePreference\": \"en-US\",\n        \"resolvedSystemPrompt\": \"Example text\",\n        \"profileId\": \"example_123\",\n        \"model\": \"example\",\n        \"promptSource\": \"PROMPT_SOURCE_CLIENT_OVERRIDE\",\n        \"profileVersion\": 1,\n        \"fragmentsVersion\": 1,\n        \"profileRenderFailed\": true,\n        \"resolvedPromptHash\": \"Example text\",\n        \"resolvedUserContext\": \"Example text\"\n      },\n      \"clientContext\": {},\n      \"feedback\": [\n        {\n          \"kind\": \"FEEDBACK_KIND_THUMB\",\n          \"thumbUp\": true,\n          \"reason\": \"example\",\n          \"ratedBy\": \"example\"\n        }\n      ],\n      \"sourceUserMessageId\": \"example_123\",\n      \"finishReason\": \"example\"\n    }\n  ],\n  \"defaultGenerationConfig\": {\n    \"model\": \"example\",\n    \"models\": [\n      \"example\"\n    ],\n    \"systemPrompt\": \"Example text\",\n    \"modelRoutingFilter\": {\n      \"minContextLength\": \"1\",\n      \"minMaxCompletionTokens\": \"1\",\n      \"requiredInputModalities\": [\n        \"example\"\n      ],\n      \"requiredOutputModalities\": [\n        \"example\"\n      ],\n      \"maxPromptCost\": 1,\n      \"maxCompletionCost\": 1,\n      \"excludeModerated\": true,\n      \"requiredParameters\": [\n        \"example\"\n      ]\n    },\n    \"provider\": {\n      \"order\": [\n        \"example\"\n      ],\n      \"allowFallbacks\": true,\n      \"requireParameters\": true,\n      \"dataCollection\": \"DATA_COLLECTION_MODE_ALLOW\",\n      \"zdr\": true,\n      \"only\": [\n        \"example\"\n      ],\n      \"ignore\": [\n        \"example\"\n      ],\n      \"quantizations\": [\n        \"example\"\n      ],\n      \"sort\": \"PROVIDER_SORT_PRICE\",\n      \"enforceDistillableText\": true\n    },\n    \"reasoning\": {\n      \"effort\": \"EFFORT_HIGH\",\n      \"maxTokens\": 1,\n      \"exclude\": true,\n      \"includeReasoningHistory\": true\n    },\n    \"usage\": {\n      \"include\": true\n    },\n    \"transforms\": [\n      \"example\"\n    ],\n    \"tools\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"serverId\": \"example_123\",\n        \"tags\": [\n          \"example\"\n        ],\n        \"documentationUrl\": \"https://example.com/resource\"\n      }\n    ],\n    \"toolChoice\": {\n      \"kind\": \"TOOL_CHOICE_KIND_AUTO\",\n      \"specificToolName\": \"example\"\n    },\n    \"clientTools\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"serverId\": \"example_123\",\n        \"tags\": [\n          \"example\"\n        ],\n        \"documentationUrl\": \"https://example.com/resource\"\n      }\n    ],\n    \"toolPolicy\": {\n      \"requireApprovalToolNamePatterns\": [\n        \"example\"\n      ],\n      \"requireApprovalServerIds\": [\n        \"example_123\"\n      ],\n      \"autoApproveToolNamePatterns\": [\n        \"example\"\n      ],\n      \"autoApproveServerIds\": [\n        \"example_123\"\n      ],\n      \"approvalMode\": \"APPROVAL_MODE_MIXED\",\n      \"clientToolMode\": \"CLIENT_TOOL_MODE_MIXED\",\n      \"approvalTimeoutMs\": 1,\n      \"failOnApprovalTimeoutToolNamePatterns\": [\n        \"example\"\n      ],\n      \"stableSortByCallIndexOnTie\": true,\n      \"maxParallelToolCalls\": 1,\n      \"maxToolCallsPerLoop\": 1,\n      \"maxTotalToolCalls\": 1,\n      \"retriableToolNamePatterns\": [\n        \"example\"\n      ],\n      \"maxRetries\": 1,\n      \"retryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"nonRetryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"clientToolTimeoutMs\": 1,\n      \"failureMode\": \"FAILURE_MODE_CONTINUE\"\n    },\n    \"temperature\": 1,\n    \"topP\": 1,\n    \"maxOutputTokens\": 1,\n    \"frequencyPenalty\": 1,\n    \"presencePenalty\": 1,\n    \"stopSequences\": [\n      \"example\"\n    ],\n    \"seed\": \"1\",\n    \"responseFormat\": {\n      \"jsonObject\": true,\n      \"schemaName\": \"example\",\n      \"validate\": true,\n      \"maxValidationRetries\": 1,\n      \"responseHealing\": true\n    },\n    \"allowParallelToolCalls\": true,\n    \"topK\": 1,\n    \"repetitionPenalty\": 1,\n    \"logitBias\": {},\n    \"topLogprobs\": 1,\n    \"minP\": 1,\n    \"topA\": 1,\n    \"user\": \"example\",\n    \"modalities\": [\n      \"MODALITY_TEXT\"\n    ],\n    \"plugins\": [\n      {\n        \"id\": \"example_123\"\n      }\n    ],\n    \"languagePreference\": \"en-US\",\n    \"timeAware\": {\n      \"includeCurrentTime\": true,\n      \"includeMessageTimestamps\": true,\n      \"includeFileTimestamps\": true,\n      \"timezone\": \"example\",\n      \"timestampFormat\": \"\"\n    },\n    \"turnContext\": {\n      \"enabled\": true,\n      \"includeToolGuidance\": true,\n      \"format\": \"minimal\"\n    },\n    \"mem0\": {\n      \"enabled\": true,\n      \"searchTopK\": 1,\n      \"searchThreshold\": 1,\n      \"injectAsSystemContext\": true,\n      \"searchQueryOverride\": \"Example text\",\n      \"enableRerank\": true,\n      \"addMemoriesAsync\": true,\n      \"customExtractionPrompt\": \"Example text\",\n      \"enableGraph\": true,\n      \"agentIdOverride\": \"example_123\",\n      \"exposeAsMcpTool\": true,\n      \"includeAssistantMessages\": true,\n      \"injectMemoryTimestamps\": true\n    },\n    \"requestTimeoutSeconds\": 1,\n    \"fileResolution\": {\n      \"failureMode\": \"FILE_RESOLUTION_FAILURE_MODE_FAIL_GENERATION\"\n    },\n    \"clearTools\": true\n  },\n  \"settings\": {\n    \"interruptPolicy\": \"INTERRUPT_POLICY_REJECT_NEW\",\n    \"maxLoops\": 1,\n    \"maxParallelTools\": 1,\n    \"mcpServers\": [\n      {\n        \"serverId\": \"example_123\",\n        \"enabled\": true,\n        \"priority\": 1,\n        \"allowlistToolPatterns\": [\n          \"example\"\n        ],\n        \"blocklistToolPatterns\": [\n          \"example\"\n        ]\n      }\n    ],\n    \"toolPolicy\": {\n      \"requireApprovalToolNamePatterns\": [\n        \"example\"\n      ],\n      \"requireApprovalServerIds\": [\n        \"example_123\"\n      ],\n      \"autoApproveToolNamePatterns\": [\n        \"example\"\n      ],\n      \"autoApproveServerIds\": [\n        \"example_123\"\n      ],\n      \"approvalMode\": \"APPROVAL_MODE_MIXED\",\n      \"clientToolMode\": \"CLIENT_TOOL_MODE_MIXED\",\n      \"approvalTimeoutMs\": 1,\n      \"failOnApprovalTimeoutToolNamePatterns\": [\n        \"example\"\n      ],\n      \"stableSortByCallIndexOnTie\": true,\n      \"maxParallelToolCalls\": 1,\n      \"maxToolCallsPerLoop\": 1,\n      \"maxTotalToolCalls\": 1,\n      \"retriableToolNamePatterns\": [\n        \"example\"\n      ],\n      \"maxRetries\": 1,\n      \"retryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"nonRetryableErrorSubstrings\": [\n        \"example\"\n      ],\n      \"clientToolTimeoutMs\": 1,\n      \"failureMode\": \"FAILURE_MODE_CONTINUE\"\n    },\n    \"promptVariables\": {\n      \"example\": \"value\"\n    }\n  },\n  \"activeRunId\": \"example_123\",\n  \"activeRunning\": true,\n  \"contextManagementSettings\": {\n    \"strategy\": \"CONTEXT_STRATEGY_COMPACTION\",\n    \"compactionConfig\": {\n      \"mode\": \"COMPACTION_MODE_SYNC\",\n      \"preserveRecent\": 1\n    },\n    \"windowingConfig\": {\n      \"maxMessages\": 1\n    },\n    \"selectiveExclusionConfig\": {\n      \"excludeToolResults\": true,\n      \"excludeImages\": true,\n      \"excludeFiles\": true,\n      \"excludeReasoning\": true\n    }\n  },\n  \"compactions\": [\n    {\n      \"id\": \"example_123\",\n      \"startSequence\": \"1\",\n      \"endSequence\": \"1\",\n      \"summary\": \"example\",\n      \"originalTokenCount\": 1,\n      \"summaryTokenCount\": 1,\n      \"modelUsed\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"status\": \"COMPACTION_STATUS_PENDING\",\n      \"triggerReason\": \"COMPACTION_TRIGGER_REASON_THRESHOLD_EXCEEDED\"\n    }\n  ],\n  \"compactionInProgress\": true,\n  \"totalUsage\": {\n    \"promptTokens\": 1,\n    \"completionTokens\": 1,\n    \"totalTokens\": 1,\n    \"costEstimate\": 1,\n    \"completionTokensDetails\": {\n      \"reasoningTokens\": 1,\n      \"imageTokens\": 1,\n      \"audioTokens\": 1\n    },\n    \"promptTokensDetails\": {\n      \"cachedTokens\": 1,\n      \"cacheWriteTokens\": 1,\n      \"audioTokens\": 1,\n      \"videoTokens\": 1\n    },\n    \"costDetails\": {\n      \"upstreamInferenceCost\": 1,\n      \"upstreamInferencePromptCost\": 1,\n      \"upstreamInferenceCompletionCost\": 1\n    },\n    \"isByok\": true\n  },\n  \"externalId\": \"example_123\",\n  \"conversationKey\": \"example_123\",\n  \"lastRunStatus\": \"AGENT_STATUS_ACTIVE\"\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-build-chat-assistant-json-04-response",
                  "originalRequest": {
                    "name": "Get full conversation state",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the complete conversation state. An unknown or non-owned `externalId`\nreturns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or\nqueued request completed. Reconcile the original `runId` and its outcome before\nretrying an accepted send.\n\n## Named request examples\n\n### conversations-getConversationState-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-04-request\n\nGuide request for Poll conversation state. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-03-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/conversation-state",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "conversation-state"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conversation state returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageHistory\": [\n    {\n      \"role\": \"ROLE_USER\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"What can you help me with?\"\n        }\n      ],\n      \"timestamp\": \"2026-04-23T22:43:44.123Z\",\n      \"messageId\": \"2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d\",\n      \"sequence\": \"1\"\n    }\n  ],\n  \"activeRunId\": \"64403669-5989-4ec3-ad9c-d84223f9679f\",\n  \"activeRunning\": true\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-build-chat-assistant-json-05-response",
                  "originalRequest": {
                    "name": "Get full conversation state",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the complete conversation state. An unknown or non-owned `externalId`\nreturns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or\nqueued request completed. Reconcile the original `runId` and its outcome before\nretrying an accepted send.\n\n## Named request examples\n\n### conversations-getConversationState-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-04-request\n\nGuide request for Poll conversation state. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-03-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/conversation-state",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "conversation-state"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conversation state returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageHistory\": [\n    {\n      \"role\": \"ROLE_USER\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"What can you help me with?\"\n        }\n      ],\n      \"timestamp\": \"2026-04-23T22:43:44.123Z\",\n      \"messageId\": \"2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d\",\n      \"sequence\": \"1\"\n    },\n    {\n      \"role\": \"ROLE_ASSISTANT\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"I can assist you with a variety of tasks...\"\n        }\n      ],\n      \"timestamp\": \"2026-04-23T22:43:51.653Z\",\n      \"messageId\": \"3f2d44de-8db6-4f67-8e51-5c600902491b\",\n      \"sequence\": \"2\",\n      \"generatedBy\": \"64403669-5989-4ec3-ad9c-d84223f9679f\",\n      \"usage\": {\n        \"promptTokens\": 359,\n        \"completionTokens\": 65,\n        \"totalTokens\": 424\n      },\n      \"model\": \"google/gemini-3.1-flash-lite\"\n    }\n  ],\n  \"lastRunStatus\": \"AGENT_STATUS_COMPLETED\"\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-generation-json-02-response",
                  "originalRequest": {
                    "name": "Get full conversation state",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the complete conversation state. An unknown or non-owned `externalId`\nreturns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or\nqueued request completed. Reconcile the original `runId` and its outcome before\nretrying an accepted send.\n\n## Named request examples\n\n### conversations-getConversationState-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-04-request\n\nGuide request for Poll conversation state. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-03-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/conversation-state",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "conversation-state"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conversation state returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageHistory\": [\n    {\n      \"role\": \"ROLE_USER\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Hello, what can you help me with?\"\n        }\n      ],\n      \"timestamp\": \"2026-04-23T22:43:44.123Z\",\n      \"messageId\": \"2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d\",\n      \"sequence\": \"1\"\n    }\n  ],\n  \"activeRunId\": \"64403669-5989-4ec3-ad9c-d84223f9679f\",\n  \"activeRunning\": true\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-generation-json-03-response",
                  "originalRequest": {
                    "name": "Get full conversation state",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the complete conversation state. An unknown or non-owned `externalId`\nreturns `404`.\n\nWhen polling, the absence of an active run does not prove that an accepted or\nqueued request completed. Reconcile the original `runId` and its outcome before\nretrying an accepted send.\n\n## Named request examples\n\n### conversations-getConversationState-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-04-request\n\nGuide request for Poll conversation state. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-context-management-03-request\n\nGuide request for Recipe: compact the older history, then continue the thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/conversation-state",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "conversation-state"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Conversation state returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageHistory\": [\n    {\n      \"role\": \"ROLE_USER\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Hello, what can you help me with?\"\n        }\n      ],\n      \"timestamp\": \"2026-04-23T22:43:44.123Z\",\n      \"messageId\": \"2a1f33ce-1abc-4a5d-9e22-1c0d1a2b3c4d\",\n      \"sequence\": \"1\"\n    },\n    {\n      \"role\": \"ROLE_ASSISTANT\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"I can assist you with...\"\n        }\n      ],\n      \"timestamp\": \"2026-04-23T22:43:51.653Z\",\n      \"messageId\": \"3f2d44de-8db6-4f67-8e51-5c600902491b\",\n      \"sequence\": \"2\",\n      \"generatedBy\": \"64403669-5989-4ec3-ad9c-d84223f9679f\",\n      \"usage\": {\n        \"promptTokens\": 359,\n        \"completionTokens\": 65,\n        \"totalTokens\": 424\n      },\n      \"model\": \"google/gemini-3.1-flash-lite\"\n    }\n  ],\n  \"lastRunStatus\": \"AGENT_STATUS_COMPLETED\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Feedback",
          "description": {
            "content": "Rate assistant messages with a thumb or a 1–10 scale, and withdraw ratings. One rating is kept per rater per message; the rater comes from the authenticated caller.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Rate an assistant message",
              "request": {
                "name": "Rate an assistant message",
                "description": {
                  "type": "text/markdown",
                  "content": "Records the caller's rating on an assistant-generated message. One entry is stored\nper rater per message; re-rating replaces only the caller's previous entry.\n\nSerialize re-rating and withdrawal actions and reconcile stored state: uniqueness\ndoes not guarantee ordering against a delayed request or analytics event.\n\n## Named request examples\n\n### conversations-rateMessage-request\n\nGive an existing assistant message a positive thumb rating; replace its sequence number.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\",\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-01-request\n\nGuide request for Save the user’s judgment beside the reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8,\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-json-02-request\n\nGuide request for Variant: use a 1–10 scale instead of thumbs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8,\n  \"kind\": \"FEEDBACK_KIND_SCALE\",\n  \"rating\": 9,\n  \"reason\": \"Answered the question and cited the policy.\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/rate-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "rate-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\",\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-rateMessage-response",
                  "originalRequest": {
                    "name": "Rate an assistant message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Records the caller's rating on an assistant-generated message. One entry is stored\nper rater per message; re-rating replaces only the caller's previous entry.\n\nSerialize re-rating and withdrawal actions and reconcile stored state: uniqueness\ndoes not guarantee ordering against a delayed request or analytics event.\n\n## Named request examples\n\n### conversations-rateMessage-request\n\nGive an existing assistant message a positive thumb rating; replace its sequence number.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\",\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-01-request\n\nGuide request for Save the user’s judgment beside the reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8,\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-json-02-request\n\nGuide request for Variant: use a 1–10 scale instead of thumbs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8,\n  \"kind\": \"FEEDBACK_KIND_SCALE\",\n  \"rating\": 9,\n  \"reason\": \"Answered the question and cited the policy.\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/rate-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "rate-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\",\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Rating recorded",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"ratedMessage\": {\n    \"role\": \"ROLE_SYSTEM\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Example text\",\n        \"cachePreferred\": true\n      }\n    ],\n    \"toolCalls\": [\n      {\n        \"id\": \"example_123\",\n        \"name\": \"example\",\n        \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n        \"serverId\": \"example_123\",\n        \"isClientTool\": true,\n        \"description\": \"example\",\n        \"approvedBy\": \"example\",\n        \"endReason\": \"example\"\n      }\n    ],\n    \"name\": \"example\",\n    \"timestamp\": \"2026-09-16T12:00:00Z\",\n    \"messageId\": \"example_123\",\n    \"annotations\": [\n      {\n        \"kind\": \"ANNOTATION_KIND_URL_CITATION\"\n      }\n    ],\n    \"sequence\": \"1\",\n    \"generatedBy\": \"example\",\n    \"usage\": {\n      \"promptTokens\": 1,\n      \"completionTokens\": 1,\n      \"totalTokens\": 1,\n      \"costEstimate\": 1,\n      \"isByok\": true\n    },\n    \"model\": \"example\",\n    \"generationContext\": {\n      \"languagePreference\": \"en-US\",\n      \"resolvedSystemPrompt\": \"Example text\",\n      \"profileId\": \"example_123\",\n      \"model\": \"example\",\n      \"promptSource\": \"PROMPT_SOURCE_CLIENT_OVERRIDE\",\n      \"profileVersion\": 1,\n      \"fragmentsVersion\": 1,\n      \"profileRenderFailed\": true,\n      \"resolvedPromptHash\": \"Example text\",\n      \"resolvedUserContext\": \"Example text\"\n    },\n    \"clientContext\": {},\n    \"feedback\": [\n      {\n        \"kind\": \"FEEDBACK_KIND_THUMB\",\n        \"thumbUp\": true,\n        \"reason\": \"example\",\n        \"ratedBy\": \"example\"\n      }\n    ],\n    \"sourceUserMessageId\": \"example_123\",\n    \"finishReason\": \"example\"\n  },\n  \"isUpdate\": true\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-message-feedback-json-01-response",
                  "originalRequest": {
                    "name": "Rate an assistant message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Records the caller's rating on an assistant-generated message. One entry is stored\nper rater per message; re-rating replaces only the caller's previous entry.\n\nSerialize re-rating and withdrawal actions and reconcile stored state: uniqueness\ndoes not guarantee ordering against a delayed request or analytics event.\n\n## Named request examples\n\n### conversations-rateMessage-request\n\nGive an existing assistant message a positive thumb rating; replace its sequence number.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\",\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-01-request\n\nGuide request for Save the user’s judgment beside the reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8,\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-json-02-request\n\nGuide request for Variant: use a 1–10 scale instead of thumbs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8,\n  \"kind\": \"FEEDBACK_KIND_SCALE\",\n  \"rating\": 9,\n  \"reason\": \"Answered the question and cited the policy.\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/rate-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "rate-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\",\n  \"kind\": \"FEEDBACK_KIND_THUMB\",\n  \"thumbUp\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Rating recorded",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"ratedMessage\": {\n    \"role\": \"ROLE_ASSISTANT\",\n    \"sequence\": \"8\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"…\"\n      }\n    ],\n    \"feedback\": [\n      {\n        \"kind\": \"FEEDBACK_KIND_THUMB\",\n        \"thumbUp\": true,\n        \"ratedAt\": \"2026-08-14T11:02:44Z\",\n        \"ratedBy\": \"user_123\"\n      }\n    ]\n  },\n  \"isUpdate\": true\n}"
                }
              ]
            },
            {
              "name": "Withdraw your rating on a message",
              "request": {
                "name": "Withdraw your rating on a message",
                "description": {
                  "type": "text/markdown",
                  "content": "Removes the caller's own rating from a message. As with `rate-message`, the rater\nis derived server-side from the verified request headers.\n\nThis is idempotent: withdrawing a rating that was never left is a success, not an\nerror — the response returns `removed: false` in that case.\n\n## Named request examples\n\n### conversations-deleteMessageRating-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\"\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-02-request\n\nGuide request for Let the user remove their judgment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/delete-message-rating",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "delete-message-rating"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-deleteMessageRating-response",
                  "originalRequest": {
                    "name": "Withdraw your rating on a message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Removes the caller's own rating from a message. As with `rate-message`, the rater\nis derived server-side from the verified request headers.\n\nThis is idempotent: withdrawing a rating that was never left is a success, not an\nerror — the response returns `removed: false` in that case.\n\n## Named request examples\n\n### conversations-deleteMessageRating-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\"\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-02-request\n\nGuide request for Let the user remove their judgment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/delete-message-rating",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "delete-message-rating"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Rating withdrawn (or confirmed absent)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"ratedMessage\": {\n    \"role\": \"ROLE_SYSTEM\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Example text\",\n        \"cachePreferred\": true\n      }\n    ],\n    \"toolCalls\": [\n      {\n        \"id\": \"example_123\",\n        \"name\": \"example\",\n        \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n        \"serverId\": \"example_123\",\n        \"isClientTool\": true,\n        \"description\": \"example\",\n        \"approvedBy\": \"example\",\n        \"endReason\": \"example\"\n      }\n    ],\n    \"name\": \"example\",\n    \"timestamp\": \"2026-09-16T12:00:00Z\",\n    \"messageId\": \"example_123\",\n    \"annotations\": [\n      {\n        \"kind\": \"ANNOTATION_KIND_URL_CITATION\"\n      }\n    ],\n    \"sequence\": \"1\",\n    \"generatedBy\": \"example\",\n    \"usage\": {\n      \"promptTokens\": 1,\n      \"completionTokens\": 1,\n      \"totalTokens\": 1,\n      \"costEstimate\": 1,\n      \"isByok\": true\n    },\n    \"model\": \"example\",\n    \"generationContext\": {\n      \"languagePreference\": \"en-US\",\n      \"resolvedSystemPrompt\": \"Example text\",\n      \"profileId\": \"example_123\",\n      \"model\": \"example\",\n      \"promptSource\": \"PROMPT_SOURCE_CLIENT_OVERRIDE\",\n      \"profileVersion\": 1,\n      \"fragmentsVersion\": 1,\n      \"profileRenderFailed\": true,\n      \"resolvedPromptHash\": \"Example text\",\n      \"resolvedUserContext\": \"Example text\"\n    },\n    \"clientContext\": {},\n    \"feedback\": [\n      {\n        \"kind\": \"FEEDBACK_KIND_THUMB\",\n        \"thumbUp\": true,\n        \"reason\": \"example\",\n        \"ratedBy\": \"example\"\n      }\n    ],\n    \"sourceUserMessageId\": \"example_123\",\n    \"finishReason\": \"example\"\n  },\n  \"removed\": true\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-message-feedback-json-03-response",
                  "originalRequest": {
                    "name": "Withdraw your rating on a message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Removes the caller's own rating from a message. As with `rate-message`, the rater\nis derived server-side from the verified request headers.\n\nThis is idempotent: withdrawing a rating that was never left is a success, not an\nerror — the response returns `removed: false` in that case.\n\n## Named request examples\n\n### conversations-deleteMessageRating-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\"\n}\n\n```\n\n### cookbook-insights-evaluation-message-feedback-02-request\n\nGuide request for Let the user remove their judgment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"messageSequence\": 8\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/delete-message-rating",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "delete-message-rating"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"messageSequence\": \"1\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Rating withdrawn (or confirmed absent)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"ratedMessage\": {\n    \"role\": \"ROLE_ASSISTANT\",\n    \"sequence\": \"8\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"…\"\n      }\n    ]\n  },\n  \"removed\": true\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Voice",
          "description": {
            "content": "Hosted-provider voice sessions; configured voice services and credentials are required.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a voice session (in progress)",
              "request": {
                "name": "Create a voice session (in progress)",
                "description": {
                  "type": "text/markdown",
                  "content": "Starts the configured hosted-provider voice session for an initialized conversation.\nConfirm room connection and agent readiness through provider events. A returned\nsession alone does not establish that the agent joined or that transcripts were\nstored in conversation history.\n\nAt session end, handle room expiry and the client's local capture separately; a\nlocal disconnect alone does not establish remote cleanup.\n\n## Named request examples\n\n### conversations-createDailySession-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-voice-media-index-01-request\n\nGuide request for Step 1: Start the voice session for the existing thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"agentName\": \"my-voice-agent\",\n  \"createDailyRoom\": true,\n  \"dailyRoomProperties\": {\n    \"enableRecording\": \"RECORDING_MODE_DISABLED\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/create-daily-session",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "create-daily-session"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-createDailySession-response",
                  "originalRequest": {
                    "name": "Create a voice session (in progress)",
                    "description": {
                      "type": "text/markdown",
                      "content": "Starts the configured hosted-provider voice session for an initialized conversation.\nConfirm room connection and agent readiness through provider events. A returned\nsession alone does not establish that the agent joined or that transcripts were\nstored in conversation history.\n\nAt session end, handle room expiry and the client's local capture separately; a\nlocal disconnect alone does not establish remote cleanup.\n\n## Named request examples\n\n### conversations-createDailySession-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-voice-media-index-01-request\n\nGuide request for Step 1: Start the voice session for the existing thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"agentName\": \"my-voice-agent\",\n  \"createDailyRoom\": true,\n  \"dailyRoomProperties\": {\n    \"enableRecording\": \"RECORDING_MODE_DISABLED\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/create-daily-session",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "create-daily-session"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Voice session created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"session\": {\n    \"agentName\": \"example\",\n    \"sessionId\": \"example_123\",\n    \"dailyRoom\": \"example\",\n    \"dailyToken\": \"example\",\n    \"userData\": {},\n    \"dailyRoomProperties\": {\n      \"nbf\": \"1\",\n      \"exp\": \"1\",\n      \"maxParticipants\": 1,\n      \"enablePeopleUi\": true,\n      \"enablePipUi\": true,\n      \"enableEmojiReactions\": true,\n      \"enableHandRaising\": true,\n      \"enablePrejoinUi\": true,\n      \"enableLiveCaptionsUi\": true,\n      \"enableNetworkUi\": true,\n      \"enableNoiseCancellationUi\": true,\n      \"enableBreakoutRooms\": true,\n      \"enableKnocking\": true,\n      \"ownerOnlyBroadcast\": true,\n      \"enforceUniqueUserIds\": true,\n      \"enableScreenshare\": true,\n      \"enableVideoProcessingUi\": true,\n      \"enableChat\": true,\n      \"enableSharedChatHistory\": true,\n      \"enableAdvancedChat\": true,\n      \"enableHiddenParticipants\": true,\n      \"startVideoOff\": true,\n      \"startAudioOff\": true,\n      \"enableRecording\": \"RECORDING_MODE_CLOUD\",\n      \"ejectAtRoomExp\": true,\n      \"ejectAfterElapsed\": 1,\n      \"enableMeshSfu\": true,\n      \"sfuSwitchover\": 1,\n      \"enableAdaptiveSimulcast\": true,\n      \"enableMultipartyAdaptiveSimulcast\": true,\n      \"experimentalOptimizeLargeCalls\": true,\n      \"lang\": \"example\",\n      \"meetingJoinHook\": \"example\",\n      \"geo\": \"example\",\n      \"rtmpGeo\": \"example\",\n      \"disableRtmpGeoFallback\": true,\n      \"recordingsTemplate\": \"example\",\n      \"transcriptionTemplate\": \"example\"\n    },\n    \"dailyMeetingTokenProperties\": {\n      \"isOwner\": true,\n      \"enableAutoRecording\": true\n    },\n    \"startedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-voice-media-index-json-01-response",
                  "originalRequest": {
                    "name": "Create a voice session (in progress)",
                    "description": {
                      "type": "text/markdown",
                      "content": "Starts the configured hosted-provider voice session for an initialized conversation.\nConfirm room connection and agent readiness through provider events. A returned\nsession alone does not establish that the agent joined or that transcripts were\nstored in conversation history.\n\nAt session end, handle room expiry and the client's local capture separately; a\nlocal disconnect alone does not establish remote cleanup.\n\n## Named request examples\n\n### conversations-createDailySession-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-voice-media-index-01-request\n\nGuide request for Step 1: Start the voice session for the existing thread. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"agentName\": \"my-voice-agent\",\n  \"createDailyRoom\": true,\n  \"dailyRoomProperties\": {\n    \"enableRecording\": \"RECORDING_MODE_DISABLED\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/create-daily-session",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "create-daily-session"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Voice session created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"session\": {\n    \"sessionId\": \"sess_abc123\",\n    \"agentName\": \"my-voice-agent\",\n    \"dailyRoom\": \"travila-abc123\",\n    \"dailyToken\": \"eyJ...\",\n    \"startedAt\": \"2026-08-17T10:00:00Z\",\n    \"userData\": {\n      \"fields\": {\n        \"displayName\": \"Alex\"\n      }\n    },\n    \"dailyRoomProperties\": {\n      \"exp\": \"1786964400\"\n    },\n    \"dailyMeetingTokenProperties\": {\n      \"isOwner\": false\n    }\n  }\n}"
                }
              ]
            },
            {
              "name": "Mint a speech-to-text token (in progress)",
              "request": {
                "name": "Mint a speech-to-text token (in progress)",
                "description": {
                  "type": "text/markdown",
                  "content": "Mints a short-lived speech-to-text token using the configured Cartesia credential.\nThe request fails when that credential is missing. The client uses this token to\ncall the STT API directly so the backend key never reaches the client.\n\n## Named request examples\n\n### conversations-mintSttToken-request\n\nRequest a speech-to-text token using the configured provider; no body fields are required.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/stt-token",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "stt-token"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mintSttToken-response",
                  "originalRequest": {
                    "name": "Mint a speech-to-text token (in progress)",
                    "description": {
                      "type": "text/markdown",
                      "content": "Mints a short-lived speech-to-text token using the configured Cartesia credential.\nThe request fails when that credential is missing. The client uses this token to\ncall the STT API directly so the backend key never reaches the client.\n\n## Named request examples\n\n### conversations-mintSttToken-request\n\nRequest a speech-to-text token using the configured provider; no body fields are required.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/stt-token",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "stt-token"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "STT token minted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"token\": \"example\",\n  \"expiresInSeconds\": 1\n}"
                },
                {
                  "name": "cookbook-managed-agents-voice-media-index-json-02-response",
                  "originalRequest": {
                    "name": "Mint a speech-to-text token (in progress)",
                    "description": {
                      "type": "text/markdown",
                      "content": "Mints a short-lived speech-to-text token using the configured Cartesia credential.\nThe request fails when that credential is missing. The client uses this token to\ncall the STT API directly so the backend key never reaches the client.\n\n## Named request examples\n\n### conversations-mintSttToken-request\n\nRequest a speech-to-text token using the configured provider; no body fields are required.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/stt-token",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "stt-token"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "STT token minted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"token\": \"stt_eph_...\",\n  \"expiresInSeconds\": 600\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Tool Approvals",
          "description": {
            "content": "Manage tool call approval workflows. See the [Agent tools guide](/integrations/tools-connections) for the full approval flow.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List pending tool approvals",
              "request": {
                "name": "List pending tool approvals",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns all tool calls in the active generation run that are awaiting human approval. Used when the tool execution policy requires confirmation before executing certain tools.\n\n## Named request examples\n\n### conversations-listPendingApprovals-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-01-request\n\nGuide request for Step 2: Show the action awaiting a decision. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/list-pending-approvals",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "list-pending-approvals"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-listPendingApprovals-response",
                  "originalRequest": {
                    "name": "List pending tool approvals",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns all tool calls in the active generation run that are awaiting human approval. Used when the tool execution policy requires confirmation before executing certain tools.\n\n## Named request examples\n\n### conversations-listPendingApprovals-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-01-request\n\nGuide request for Step 2: Show the action awaiting a decision. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/list-pending-approvals",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "list-pending-approvals"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Pending approvals listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"toolCalls\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"argumentsJson\": {\n        \"example\": \"value\"\n      },\n      \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n      \"resultJson\": {\n        \"example\": \"value\"\n      },\n      \"executedAt\": \"2026-09-16T12:00:00Z\",\n      \"serverId\": \"example_123\",\n      \"isClientTool\": true,\n      \"description\": \"example\",\n      \"parametersJsonSchema\": {\n        \"example\": \"value\"\n      },\n      \"requiresApprovalAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedBy\": \"example\",\n      \"executionDuration\": \"1s\",\n      \"endReason\": \"example\",\n      \"clientToolDeadlineAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Approve or reject pending tool calls",
              "request": {
                "name": "Approve or reject pending tool calls",
                "description": {
                  "type": "text/markdown",
                  "content": "Submits approval decisions for pending calls. An accepted approval permits the conversation workflow to continue subject to execution checks; it is not a general authorization grant. Rejection prevents dispatch of a still-pending call and does not undo an action already executed elsewhere.\n\n## Named request examples\n\n### conversations-submitToolApprovals-request\n\nApprove a pending tool call; use its ID from listPendingApprovals.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"approvals\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"approved\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-02-request\n\nGuide request for Step 3: Submit the decision and inspect the outcome. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"approvals\": [\n    {\n      \"toolCallId\": \"call_abc123\",\n      \"approved\": true\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/submit-tool-approvals",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "submit-tool-approvals"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"approvals\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"approved\": true\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-submitToolApprovals-response",
                  "originalRequest": {
                    "name": "Approve or reject pending tool calls",
                    "description": {
                      "type": "text/markdown",
                      "content": "Submits approval decisions for pending calls. An accepted approval permits the conversation workflow to continue subject to execution checks; it is not a general authorization grant. Rejection prevents dispatch of a still-pending call and does not undo an action already executed elsewhere.\n\n## Named request examples\n\n### conversations-submitToolApprovals-request\n\nApprove a pending tool call; use its ID from listPendingApprovals.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"approvals\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"approved\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-02-request\n\nGuide request for Step 3: Submit the decision and inspect the outcome. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"approvals\": [\n    {\n      \"toolCallId\": \"call_abc123\",\n      \"approved\": true\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/submit-tool-approvals",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "submit-tool-approvals"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"approvals\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"approved\": true\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Approvals submitted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Client Tools",
          "description": {
            "content": "Submit results from client-side tool executions. See the [Agent tools guide](/integrations/tools-connections) for client-side tool patterns.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Submit client-side tool execution results",
              "request": {
                "name": "Submit client-side tool execution results",
                "description": {
                  "type": "text/markdown",
                  "content": "Submits results for client-side tool calls and returns without waiting for the next\ngeneration segment. While the conversation still identifies a run, workflow\nvalidation rejects unmatched calls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can succeed without applying any results.\nReconcile stored run and tool state before treating HTTP success as confirmation\nthat the results were applied.\n\nA run can request further batches. Read pending client tools, execute each new\nbatch and submit its results until the run reaches a terminal outcome. An unknown\nstatus requires reconciliation with a bounded wait, not an assumption of success.\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for outcome\nhandling and the synchronous client-tool loop.\n\n## Named request examples\n\n### conversations-submitClientToolResults-request\n\nReturn a result for a pending client tool call; use its actual ID, name and expected result shape.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/submit-client-tool-results",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "submit-client-tool-results"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-submitClientToolResults-response",
                  "originalRequest": {
                    "name": "Submit client-side tool execution results",
                    "description": {
                      "type": "text/markdown",
                      "content": "Submits results for client-side tool calls and returns without waiting for the next\ngeneration segment. While the conversation still identifies a run, workflow\nvalidation rejects unmatched calls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can succeed without applying any results.\nReconcile stored run and tool state before treating HTTP success as confirmation\nthat the results were applied.\n\nA run can request further batches. Read pending client tools, execute each new\nbatch and submit its results until the run reaches a terminal outcome. An unknown\nstatus requires reconciliation with a bounded wait, not an assumption of success.\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for outcome\nhandling and the synchronous client-tool loop.\n\n## Named request examples\n\n### conversations-submitClientToolResults-request\n\nReturn a result for a pending client tool call; use its actual ID, name and expected result shape.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/submit-client-tool-results",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "submit-client-tool-results"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Client tool results submitted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Submit client-side tool results and wait for the next segment",
              "request": {
                "name": "Submit client-side tool results and wait for the next segment",
                "description": {
                  "type": "text/markdown",
                  "content": "Submits client-side tool results and waits until the run arms another client-tool\nbatch or finishes. This continues the loop started by `send-message-sync`. While\nthe conversation still identifies a run, workflow validation rejects unmatched\ncalls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can return success immediately without\napplying any results. Reconcile stored run and tool state before treating HTTP\nsuccess as confirmation that the results were applied.\n\nEcho the `clientToolCursor` from the response that armed the calls. A stale cursor\nre-delivers a batch rather than skipping one. When another batch arrives, execute\nit and submit again with its new cursor until the run reaches a terminal outcome.\nReconcile an unknown status with a bounded wait; do not assume success.\n\nAn empty `results` array returns `400`: submitting nothing resolves nothing. Use\n`list-pending-client-tools` to inspect pending work or recover after a dropped\nconnection. Do not resend the original user message, which would start another run.\nUse `submit-client-tool-results` when you do not want to hold the connection.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-submitClientToolResultsSync-request\n\nReturn a result for a pending client tool call; use its actual ID, name and expected result shape.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-02-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_abc123\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-04-request\n\nGuide request for Step 2: Validate, open and return the real result. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_306135\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/submit-client-tool-results-sync",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "submit-client-tool-results-sync"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-submitClientToolResultsSync-response",
                  "originalRequest": {
                    "name": "Submit client-side tool results and wait for the next segment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Submits client-side tool results and waits until the run arms another client-tool\nbatch or finishes. This continues the loop started by `send-message-sync`. While\nthe conversation still identifies a run, workflow validation rejects unmatched\ncalls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can return success immediately without\napplying any results. Reconcile stored run and tool state before treating HTTP\nsuccess as confirmation that the results were applied.\n\nEcho the `clientToolCursor` from the response that armed the calls. A stale cursor\nre-delivers a batch rather than skipping one. When another batch arrives, execute\nit and submit again with its new cursor until the run reaches a terminal outcome.\nReconcile an unknown status with a bounded wait; do not assume success.\n\nAn empty `results` array returns `400`: submitting nothing resolves nothing. Use\n`list-pending-client-tools` to inspect pending work or recover after a dropped\nconnection. Do not resend the original user message, which would start another run.\nUse `submit-client-tool-results` when you do not want to hold the connection.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-submitClientToolResultsSync-request\n\nReturn a result for a pending client tool call; use its actual ID, name and expected result shape.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-02-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_abc123\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-04-request\n\nGuide request for Step 2: Validate, open and return the real result. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_306135\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/submit-client-tool-results-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "submit-client-tool-results-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status and available messages or pending client tools returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"example_123\",\n  \"messages\": [\n    {\n      \"role\": \"ROLE_SYSTEM\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Example text\",\n          \"cachePreferred\": true\n        }\n      ],\n      \"toolCalls\": [\n        {\n          \"id\": \"example_123\",\n          \"name\": \"example\",\n          \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n          \"serverId\": \"example_123\",\n          \"isClientTool\": true,\n          \"description\": \"example\",\n          \"approvedBy\": \"example\",\n          \"endReason\": \"example\"\n        }\n      ],\n      \"name\": \"example\",\n      \"timestamp\": \"2026-09-16T12:00:00Z\",\n      \"messageId\": \"example_123\",\n      \"annotations\": [\n        {\n          \"kind\": \"ANNOTATION_KIND_URL_CITATION\"\n        }\n      ],\n      \"sequence\": \"1\",\n      \"generatedBy\": \"example\",\n      \"usage\": {\n        \"promptTokens\": 1,\n        \"completionTokens\": 1,\n        \"totalTokens\": 1,\n        \"costEstimate\": 1,\n        \"isByok\": true\n      },\n      \"model\": \"example\",\n      \"generationContext\": {\n        \"languagePreference\": \"en-US\",\n        \"resolvedSystemPrompt\": \"Example text\",\n        \"profileId\": \"example_123\",\n        \"model\": \"example\",\n        \"promptSource\": \"PROMPT_SOURCE_CLIENT_OVERRIDE\",\n        \"profileVersion\": 1,\n        \"fragmentsVersion\": 1,\n        \"profileRenderFailed\": true,\n        \"resolvedPromptHash\": \"Example text\",\n        \"resolvedUserContext\": \"Example text\"\n      },\n      \"clientContext\": {},\n      \"feedback\": [\n        {\n          \"kind\": \"FEEDBACK_KIND_THUMB\",\n          \"thumbUp\": true,\n          \"reason\": \"example\",\n          \"ratedBy\": \"example\"\n        }\n      ],\n      \"sourceUserMessageId\": \"example_123\",\n      \"finishReason\": \"example\"\n    }\n  ],\n  \"status\": \"AGENT_STATUS_ACTIVE\",\n  \"aggregateUsage\": {\n    \"promptTokens\": 1,\n    \"completionTokens\": 1,\n    \"totalTokens\": 1,\n    \"costEstimate\": 1,\n    \"completionTokensDetails\": {\n      \"reasoningTokens\": 1,\n      \"imageTokens\": 1,\n      \"audioTokens\": 1\n    },\n    \"promptTokensDetails\": {\n      \"cachedTokens\": 1,\n      \"cacheWriteTokens\": 1,\n      \"audioTokens\": 1,\n      \"videoTokens\": 1\n    },\n    \"costDetails\": {\n      \"upstreamInferenceCost\": 1,\n      \"upstreamInferencePromptCost\": 1,\n      \"upstreamInferenceCompletionCost\": 1\n    },\n    \"isByok\": true\n  },\n  \"pendingClientTools\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"argumentsJson\": {\n        \"example\": \"value\"\n      },\n      \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n      \"resultJson\": {\n        \"example\": \"value\"\n      },\n      \"executedAt\": \"2026-09-16T12:00:00Z\",\n      \"serverId\": \"example_123\",\n      \"isClientTool\": true,\n      \"description\": \"example\",\n      \"parametersJsonSchema\": {\n        \"example\": \"value\"\n      },\n      \"requiresApprovalAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedBy\": \"example\",\n      \"executionDuration\": \"1s\",\n      \"endReason\": \"example\",\n      \"clientToolDeadlineAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"clientToolCursor\": 1,\n  \"error\": {\n    \"code\": \"ERROR_CODE_CANCELLED\",\n    \"message\": \"example\",\n    \"isTerminal\": true,\n    \"details\": {}\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-delegation-approvals-build-agent-with-tools-json-03-response",
                  "originalRequest": {
                    "name": "Submit client-side tool results and wait for the next segment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Submits client-side tool results and waits until the run arms another client-tool\nbatch or finishes. This continues the loop started by `send-message-sync`. While\nthe conversation still identifies a run, workflow validation rejects unmatched\ncalls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can return success immediately without\napplying any results. Reconcile stored run and tool state before treating HTTP\nsuccess as confirmation that the results were applied.\n\nEcho the `clientToolCursor` from the response that armed the calls. A stale cursor\nre-delivers a batch rather than skipping one. When another batch arrives, execute\nit and submit again with its new cursor until the run reaches a terminal outcome.\nReconcile an unknown status with a bounded wait; do not assume success.\n\nAn empty `results` array returns `400`: submitting nothing resolves nothing. Use\n`list-pending-client-tools` to inspect pending work or recover after a dropped\nconnection. Do not resend the original user message, which would start another run.\nUse `submit-client-tool-results` when you do not want to hold the connection.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-submitClientToolResultsSync-request\n\nReturn a result for a pending client tool call; use its actual ID, name and expected result shape.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-02-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_abc123\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-04-request\n\nGuide request for Step 2: Validate, open and return the real result. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_306135\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/submit-client-tool-results-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "submit-client-tool-results-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status and available messages or pending client tools returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"64403669-5989-4ec3-ad9c-d84223f9679f\",\n  \"status\": \"AGENT_STATUS_COMPLETED\",\n  \"messages\": [\n    {\n      \"role\": \"ROLE_ASSISTANT\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Taking you to your profile.\"\n        }\n      ],\n      \"finishReason\": \"stop\"\n    }\n  ]\n}"
                },
                {
                  "name": "cookbook-managed-agents-delegation-approvals-using-tools-json-03-response",
                  "originalRequest": {
                    "name": "Submit client-side tool results and wait for the next segment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Submits client-side tool results and waits until the run arms another client-tool\nbatch or finishes. This continues the loop started by `send-message-sync`. While\nthe conversation still identifies a run, workflow validation rejects unmatched\ncalls with `400` and already-resolved calls with `410`.\n\nIf no active run is recorded, this call can return success immediately without\napplying any results. Reconcile stored run and tool state before treating HTTP\nsuccess as confirmation that the results were applied.\n\nEcho the `clientToolCursor` from the response that armed the calls. A stale cursor\nre-delivers a batch rather than skipping one. When another batch arrives, execute\nit and submit again with its new cursor until the run reaches a terminal outcome.\nReconcile an unknown status with a bounded wait; do not assume success.\n\nAn empty `results` array returns `400`: submitting nothing resolves nothing. Use\n`list-pending-client-tools` to inspect pending work or recover after a dropped\nconnection. Do not resend the original user message, which would start another run.\nUse `submit-client-tool-results` when you do not want to hold the connection.\n\nSee [Messages and run outcomes](/api/conversations/messages-and-runs) for status\ninterpretation and recovery.\n\n## Named request examples\n\n### conversations-submitClientToolResultsSync-request\n\nReturn a result for a pending client tool call; use its actual ID, name and expected result shape.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-developer-experience-local-tooling-testing-02-request\n\nGuide request for Verify that an in-app action returns control to the conversation. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"b81d5345-c1f9-4fb9-b558-a6327c75b842\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_abc123\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-04-request\n\nGuide request for Step 2: Validate, open and return the real result. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"clientToolCursor\": 1,\n  \"results\": [\n    {\n      \"toolCallId\": \"call_306135\",\n      \"toolName\": \"navigate_to\",\n      \"resultJson\": {\n        \"navigated_to\": \"/profile\"\n      }\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/submit-client-tool-results-sync",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "submit-client-tool-results-sync"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"results\": [\n    {\n      \"toolCallId\": \"tool_call_123\",\n      \"toolName\": \"lookup_booking\",\n      \"resultJson\": {\n        \"bookingStatus\": \"confirmed\"\n      }\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Run status and available messages or pending client tools returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"cf9f08e7-4486-41e1-bac1-b9428d1aeb85\",\n  \"status\": \"AGENT_STATUS_COMPLETED\",\n  \"messages\": [\n    {\n      \"role\": \"ROLE_ASSISTANT\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"I've opened your profile.\"\n        }\n      ],\n      \"finishReason\": \"stop\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "List client-side tool calls awaiting a result",
              "request": {
                "name": "List client-side tool calls awaiting a result",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the client-side tool calls the run is currently waiting on, with the message each belongs to. Use it to recover after a dropped connection, or from a caller that never holds one.\n\nOn reconnect, pull with this call and then submit — do not resend the original user message, which would start a second run and interrupt the one you were waiting on.\n\n## Named request examples\n\n### conversations-listPendingClientTools-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-05-request\n\nGuide request for Recover the original call after a disconnect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/list-pending-client-tools",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "list-pending-client-tools"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-listPendingClientTools-response",
                  "originalRequest": {
                    "name": "List client-side tool calls awaiting a result",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the client-side tool calls the run is currently waiting on, with the message each belongs to. Use it to recover after a dropped connection, or from a caller that never holds one.\n\nOn reconnect, pull with this call and then submit — do not resend the original user message, which would start a second run and interrupt the one you were waiting on.\n\n## Named request examples\n\n### conversations-listPendingClientTools-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-05-request\n\nGuide request for Recover the original call after a disconnect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/list-pending-client-tools",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "list-pending-client-tools"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Outstanding client-side tool calls",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageSequences\": [\n    \"1\"\n  ],\n  \"messageIds\": [\n    \"example_123\"\n  ],\n  \"toolCalls\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"argumentsJson\": {\n        \"example\": \"value\"\n      },\n      \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n      \"resultJson\": {\n        \"example\": \"value\"\n      },\n      \"executedAt\": \"2026-09-16T12:00:00Z\",\n      \"serverId\": \"example_123\",\n      \"isClientTool\": true,\n      \"description\": \"example\",\n      \"parametersJsonSchema\": {\n        \"example\": \"value\"\n      },\n      \"requiresApprovalAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedAt\": \"2026-09-16T12:00:00Z\",\n      \"approvedBy\": \"example\",\n      \"executionDuration\": \"1s\",\n      \"endReason\": \"example\",\n      \"clientToolDeadlineAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Get a single tool call by ID",
              "request": {
                "name": "Get a single tool call by ID",
                "description": {
                  "type": "text/markdown",
                  "content": "Reads the identified tool call from the conversation's current run state, including\nresolved calls retained there. An empty response means the call was not found in\nthat current run; it does not prove the call never executed.\n\nMatch the call ID and inspect both status and result. If its answer window expired,\nthe result reports `client tool timeout`. Inspect both the status and reason\nbefore deciding whether any work remains; expiration does not establish whether\nan action dispatched to the client took effect.\n\n## Named request examples\n\n### conversations-getToolCall-request\n\nInspect a tool call using an ID previously returned by the conversation.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"toolCallId\": \"tool_call_123\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-06-request\n\nGuide request for Recover the original call after a disconnect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"toolCallId\": \"call_306135\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/get-tool-call",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "get-tool-call"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"toolCallId\": \"tool_call_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-getToolCall-response",
                  "originalRequest": {
                    "name": "Get a single tool call by ID",
                    "description": {
                      "type": "text/markdown",
                      "content": "Reads the identified tool call from the conversation's current run state, including\nresolved calls retained there. An empty response means the call was not found in\nthat current run; it does not prove the call never executed.\n\nMatch the call ID and inspect both status and result. If its answer window expired,\nthe result reports `client tool timeout`. Inspect both the status and reason\nbefore deciding whether any work remains; expiration does not establish whether\nan action dispatched to the client took effect.\n\n## Named request examples\n\n### conversations-getToolCall-request\n\nInspect a tool call using an ID previously returned by the conversation.\n\n```json\n\n{\n  \"conversationKey\": \"example_123\",\n  \"toolCallId\": \"tool_call_123\"\n}\n\n```\n\n### cookbook-managed-agents-delegation-approvals-using-tools-06-request\n\nGuide request for Recover the original call after a disconnect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationKey\": \"support-chat-001\",\n  \"toolCallId\": \"call_306135\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/get-tool-call",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "get-tool-call"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"conversationKey\": \"example_123\",\n  \"toolCallId\": \"tool_call_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "The tool call",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messageSequence\": \"1\",\n  \"messageId\": \"example_123\",\n  \"toolCall\": {\n    \"id\": \"example_123\",\n    \"name\": \"example\",\n    \"argumentsJson\": {\n      \"example\": \"value\"\n    },\n    \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n    \"resultJson\": {\n      \"example\": \"value\"\n    },\n    \"executedAt\": \"2026-09-16T12:00:00Z\",\n    \"serverId\": \"example_123\",\n    \"isClientTool\": true,\n    \"description\": \"example\",\n    \"parametersJsonSchema\": {\n      \"example\": \"value\"\n    },\n    \"requiresApprovalAt\": \"2026-09-16T12:00:00Z\",\n    \"approvedAt\": \"2026-09-16T12:00:00Z\",\n    \"approvedBy\": \"example\",\n    \"executionDuration\": \"1s\",\n    \"endReason\": \"example\",\n    \"clientToolDeadlineAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "MCP Servers",
          "description": {
            "content": "Discover and introspect registered MCP servers. See the [Agent tools guide](/integrations/tools-connections).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List available MCP servers",
              "request": {
                "name": "List available MCP servers",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the discovered availability of configured MCP servers.\n\n### Built-in catalog entries\n\nThe catalog includes `built-in:tavily`. Travila supplies the vendor credential for this catalog entry; you do not need your own Tavily key. [`defaultEnabled`](/api/models/mcp-server-status#response-field-defaultenabled) is a recommendation, not a setting that attaches tools to your conversation.\n\n## Named request examples\n\n### conversations-mcpListAvailableServers-request\n\nDiscover servers available in the authenticated scope; no body filters are supplied.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-list-available-servers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-list-available-servers"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpListAvailableServers-response",
                  "originalRequest": {
                    "name": "List available MCP servers",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the discovered availability of configured MCP servers.\n\n### Built-in catalog entries\n\nThe catalog includes `built-in:tavily`. Travila supplies the vendor credential for this catalog entry; you do not need your own Tavily key. [`defaultEnabled`](/api/models/mcp-server-status#response-field-defaultenabled) is a recommendation, not a setting that attaches tools to your conversation.\n\n## Named request examples\n\n### conversations-mcpListAvailableServers-request\n\nDiscover servers available in the authenticated scope; no body filters are supplied.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-list-available-servers",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-list-available-servers"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Server list returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"servers\": [\n    {\n      \"serverId\": \"example_123\",\n      \"name\": \"example\",\n      \"status\": \"MCP_SERVER_CONNECTION_STATUS_CONNECTED\",\n      \"toolsDiscovered\": 1,\n      \"lastDiscoveryDuration\": \"1s\",\n      \"lastError\": \"example\",\n      \"lastDiscoveryTime\": \"2026-09-16T12:00:00Z\",\n      \"kind\": \"MCP_SERVER_KIND_INTERNAL\",\n      \"defaultEnabled\": true\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Get detailed MCP server info",
              "request": {
                "name": "Get detailed MCP server info",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns server information for custom servers. Requests for other server kinds currently return an empty response; use tool discovery to inspect the available tools. This response does not confirm current connectivity.\n\n## Named request examples\n\n### conversations-mcpGetServerInfo-request\n\nInspect a registered custom MCP server; replace the example server ID.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-get-server-info",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-get-server-info"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"custom:product-tools\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpGetServerInfo-response",
                  "originalRequest": {
                    "name": "Get detailed MCP server info",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns server information for custom servers. Requests for other server kinds currently return an empty response; use tool discovery to inspect the available tools. This response does not confirm current connectivity.\n\n## Named request examples\n\n### conversations-mcpGetServerInfo-request\n\nInspect a registered custom MCP server; replace the example server ID.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-get-server-info",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-get-server-info"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"custom:product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Server info returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"serverInfo\": {\n    \"serverId\": \"example_123\",\n    \"name\": \"example\",\n    \"version\": \"example\",\n    \"capabilities\": [\n      \"example\"\n    ],\n    \"metadata\": {},\n    \"status\": \"MCP_SERVER_CONNECTION_STATUS_CONNECTED\",\n    \"availableTools\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"serverId\": \"example_123\",\n        \"tags\": [\n          \"example\"\n        ],\n        \"documentationUrl\": \"https://example.com/resource\"\n      }\n    ],\n    \"kind\": \"MCP_SERVER_KIND_INTERNAL\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "MCP Tools",
          "description": {
            "content": "List and directly invoke MCP tools. See the [Agent tools guide](/integrations/tools-connections).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List available MCP tools",
              "request": {
                "name": "List available MCP tools",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns tools discovered across the selected MCP servers.\n\n## Named request examples\n\n### conversations-mcpListTools-request\n\nList tools exposed by a registered custom MCP server; replace the server ID.\n\n```json\n\n{\n  \"servers\": [\n    {\n      \"serverId\": \"custom:product-tools\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-04-request\n\nGuide request for Inspect the names before setting filters or approvals. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"servers\": [\n    {\n      \"serverId\": \"custom:firecrawl\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-list-tools",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-list-tools"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"servers\": [\n    {\n      \"serverId\": \"custom:product-tools\",\n      \"enabled\": true\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpListTools-response",
                  "originalRequest": {
                    "name": "List available MCP tools",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns tools discovered across the selected MCP servers.\n\n## Named request examples\n\n### conversations-mcpListTools-request\n\nList tools exposed by a registered custom MCP server; replace the server ID.\n\n```json\n\n{\n  \"servers\": [\n    {\n      \"serverId\": \"custom:product-tools\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-04-request\n\nGuide request for Inspect the names before setting filters or approvals. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"servers\": [\n    {\n      \"serverId\": \"custom:firecrawl\",\n      \"enabled\": true\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-list-tools",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-list-tools"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"servers\": [\n    {\n      \"serverId\": \"custom:product-tools\",\n      \"enabled\": true\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Tools listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"tools\": [\n    {\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"parametersJsonSchema\": {\n        \"example\": \"value\"\n      },\n      \"metadata\": {},\n      \"serverId\": \"example_123\",\n      \"tags\": [\n        \"example\"\n      ],\n      \"documentationUrl\": \"https://example.com/resource\",\n      \"outputJsonSchema\": {\n        \"example\": \"value\"\n      }\n    }\n  ],\n  \"totalCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Execute an MCP tool",
              "request": {
                "name": "Execute an MCP tool",
                "description": {
                  "type": "text/markdown",
                  "content": "Invokes an MCP tool directly, outside a conversation flow. Use it to test a tool\nwithout starting a generation run.\n\n## Named request examples\n\n### conversations-mcpCallTool-request\n\nCall a tool discovered through mcpListTools; replace the server, tool name and arguments with that tool’s schema.\n\n```json\n\n{\n  \"toolCall\": {\n    \"id\": \"tool_call_123\",\n    \"serverId\": \"custom:product-tools\",\n    \"name\": \"lookup_booking\",\n    \"argumentsJson\": {\n      \"booking_id\": \"BK-123\"\n    }\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-call-tool",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-call-tool"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"toolCall\": {\n    \"id\": \"tool_call_123\",\n    \"serverId\": \"custom:product-tools\",\n    \"name\": \"lookup_booking\",\n    \"argumentsJson\": {\n      \"booking_id\": \"BK-123\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpCallTool-response",
                  "originalRequest": {
                    "name": "Execute an MCP tool",
                    "description": {
                      "type": "text/markdown",
                      "content": "Invokes an MCP tool directly, outside a conversation flow. Use it to test a tool\nwithout starting a generation run.\n\n## Named request examples\n\n### conversations-mcpCallTool-request\n\nCall a tool discovered through mcpListTools; replace the server, tool name and arguments with that tool’s schema.\n\n```json\n\n{\n  \"toolCall\": {\n    \"id\": \"tool_call_123\",\n    \"serverId\": \"custom:product-tools\",\n    \"name\": \"lookup_booking\",\n    \"argumentsJson\": {\n      \"booking_id\": \"BK-123\"\n    }\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-call-tool",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-call-tool"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"toolCall\": {\n    \"id\": \"tool_call_123\",\n    \"serverId\": \"custom:product-tools\",\n    \"name\": \"lookup_booking\",\n    \"argumentsJson\": {\n      \"booking_id\": \"BK-123\"\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Tool executed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"requestId\": \"example_123\",\n  \"toolCall\": {\n    \"id\": \"example_123\",\n    \"name\": \"example\",\n    \"argumentsJson\": {\n      \"example\": \"value\"\n    },\n    \"status\": \"TOOL_EXECUTION_STATUS_PENDING\",\n    \"resultJson\": {\n      \"example\": \"value\"\n    },\n    \"executedAt\": \"2026-09-16T12:00:00Z\",\n    \"serverId\": \"example_123\",\n    \"isClientTool\": true,\n    \"description\": \"example\",\n    \"parametersJsonSchema\": {\n      \"example\": \"value\"\n    },\n    \"requiresApprovalAt\": \"2026-09-16T12:00:00Z\",\n    \"approvedAt\": \"2026-09-16T12:00:00Z\",\n    \"approvedBy\": \"example\",\n    \"executionDuration\": \"1s\",\n    \"endReason\": \"example\",\n    \"clientToolDeadlineAt\": \"2026-09-16T12:00:00Z\"\n  },\n  \"executionTimeMs\": 1\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "MCP Resources",
          "description": {
            "content": "MCP resource retrieval is not yet available. These endpoints currently return empty responses. See the [Agent tools guide](/integrations/tools-connections).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List MCP resources",
              "request": {
                "name": "List MCP resources",
                "description": {
                  "type": "text/markdown",
                  "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpListResources-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-list-resources",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-list-resources"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"custom:product-tools\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpListResources-response",
                  "originalRequest": {
                    "name": "List MCP resources",
                    "description": {
                      "type": "text/markdown",
                      "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpListResources-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-list-resources",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-list-resources"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"custom:product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Empty response; resource listing is not yet available",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"resources\": [\n    {\n      \"uri\": \"https://example.com/resource\",\n      \"title\": \"example\",\n      \"description\": \"example\",\n      \"mimeType\": \"example\",\n      \"content\": [\n        {\n          \"type\": \"CONTENT_PART_TYPE_TEXT\",\n          \"content\": \"Example text\",\n          \"cachePreferred\": true\n        }\n      ],\n      \"annotations\": {},\n      \"lastModified\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"totalCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Read an MCP resource",
              "request": {
                "name": "Read an MCP resource",
                "description": {
                  "type": "text/markdown",
                  "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpReadResource-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\",\n  \"uri\": \"resource://bookings/BK-123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-read-resource",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-read-resource"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"custom:product-tools\",\n  \"uri\": \"resource://bookings/BK-123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpReadResource-response",
                  "originalRequest": {
                    "name": "Read an MCP resource",
                    "description": {
                      "type": "text/markdown",
                      "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpReadResource-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\",\n  \"uri\": \"resource://bookings/BK-123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-read-resource",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-read-resource"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"custom:product-tools\",\n  \"uri\": \"resource://bookings/BK-123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Empty response; resource retrieval is not yet available",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"resource\": {\n    \"uri\": \"https://example.com/resource\",\n    \"title\": \"example\",\n    \"description\": \"example\",\n    \"mimeType\": \"example\",\n    \"content\": [\n      {\n        \"type\": \"CONTENT_PART_TYPE_TEXT\",\n        \"content\": \"Example text\",\n        \"cachePreferred\": true\n      }\n    ],\n    \"annotations\": {},\n    \"lastModified\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "MCP Prompts",
          "description": {
            "content": "MCP prompt retrieval is not yet available. These endpoints currently return empty responses. See the [Agent tools guide](/integrations/tools-connections).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List MCP prompt templates",
              "request": {
                "name": "List MCP prompt templates",
                "description": {
                  "type": "text/markdown",
                  "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpListPrompts-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-list-prompts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-list-prompts"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"custom:product-tools\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpListPrompts-response",
                  "originalRequest": {
                    "name": "List MCP prompt templates",
                    "description": {
                      "type": "text/markdown",
                      "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpListPrompts-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-list-prompts",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-list-prompts"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"custom:product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Empty response; prompt listing is not yet available",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"prompts\": [\n    {\n      \"name\": \"example\",\n      \"title\": \"example\",\n      \"description\": \"example\",\n      \"parameters\": [\n        {\n          \"name\": \"example\",\n          \"description\": \"example\",\n          \"type\": \"example\",\n          \"required\": true\n        }\n      ],\n      \"template\": \"example\"\n    }\n  ],\n  \"totalCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Get an MCP prompt template",
              "request": {
                "name": "Get an MCP prompt template",
                "description": {
                  "type": "text/markdown",
                  "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpGetPrompt-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\",\n  \"name\": \"travel-summary\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/mcp-get-prompt",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "mcp-get-prompt"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"custom:product-tools\",\n  \"name\": \"travel-summary\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-mcpGetPrompt-response",
                  "originalRequest": {
                    "name": "Get an MCP prompt template",
                    "description": {
                      "type": "text/markdown",
                      "content": "This operation is not yet available. It currently returns an empty response without retrieving a resource or prompt. Do not treat the response as a successful lookup or rendering.\n\n## Named request examples\n\n### conversations-mcpGetPrompt-request\n\nIllustrative request shape; the current handler returns an empty result without fetching resources or prompts.\n\n```json\n\n{\n  \"serverId\": \"custom:product-tools\",\n  \"name\": \"travel-summary\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/mcp-get-prompt",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "mcp-get-prompt"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"custom:product-tools\",\n  \"name\": \"travel-summary\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Empty response; prompt retrieval is not yet available",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"prompt\": {\n    \"name\": \"example\",\n    \"title\": \"example\",\n    \"description\": \"example\",\n    \"parameters\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"type\": \"example\",\n        \"required\": true\n      }\n    ],\n    \"template\": \"example\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Memory",
          "description": {
            "content": "Semantic memory search and CRUD. See the [Memory guide](/managed-agents/memory-knowledge) for how memories integrate with conversations.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Semantic search over memories",
              "request": {
                "name": "Semantic search over memories",
                "description": {
                  "type": "text/markdown",
                  "content": "Searches memories by meaning within the authenticated user's tenant scope. Results\nand relationships depend on the configured provider. An empty result can represent\na handled provider failure and does not prove that no memories exist. Search does\nnot provide pagination or a complete inventory.\n\nUse an authorized backend key with X-On-Behalf-Of and users:impersonate scope, or a\npublishable key with a user JWT. A configured user JWT can also authenticate\ndirectly. An effective user and tenant are required; raw identity headers do not\ngrant authority. See the [memory cookbook](/managed-agents/memory-knowledge).\n\n## Named request examples\n\n### memory-search-request\n\nSearch dietary preferences\n\n```json\n\n{\n  \"query\": \"dietary preferences\",\n  \"topK\": 10\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/search-memories",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "search-memories"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"query\": \"dietary preferences\",\n  \"topK\": 10\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "memory-search-response",
                  "originalRequest": {
                    "name": "Semantic search over memories",
                    "description": {
                      "type": "text/markdown",
                      "content": "Searches memories by meaning within the authenticated user's tenant scope. Results\nand relationships depend on the configured provider. An empty result can represent\na handled provider failure and does not prove that no memories exist. Search does\nnot provide pagination or a complete inventory.\n\nUse an authorized backend key with X-On-Behalf-Of and users:impersonate scope, or a\npublishable key with a user JWT. A configured user JWT can also authenticate\ndirectly. An effective user and tenant are required; raw identity headers do not\ngrant authority. See the [memory cookbook](/managed-agents/memory-knowledge).\n\n## Named request examples\n\n### memory-search-request\n\nSearch dietary preferences\n\n```json\n\n{\n  \"query\": \"dietary preferences\",\n  \"topK\": 10\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/search-memories",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "search-memories"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"query\": \"dietary preferences\",\n  \"topK\": 10\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Search results returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"memories\": [\n    {\n      \"id\": \"mem_abc123\",\n      \"memory\": \"User is vegetarian and avoids gluten\",\n      \"score\": 0.92,\n      \"createdAt\": \"2025-02-15T10:00:00Z\",\n      \"updatedAt\": \"2025-02-15T10:00:00Z\"\n    },\n    {\n      \"id\": \"mem_def456\",\n      \"memory\": \"User prefers meals under 500 calories\",\n      \"score\": 0.85,\n      \"createdAt\": \"2025-02-20T14:30:00Z\",\n      \"updatedAt\": \"2025-02-20T14:30:00Z\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "List user memories",
              "request": {
                "name": "List user memories",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns memories in the effective user's scope. This operation has no pagination\ncursor or category filter. A capped response does not prove that the user has seen\nevery stored record or provide a complete all-records traversal guarantee.\n\n## Named request examples\n\n### conversations-listMemories-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"limit\": 1\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-02-request\n\nGuide request for Step 2: Let the user review the stored records. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"limit\": 100\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/list-memories",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "list-memories"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"limit\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-listMemories-response",
                  "originalRequest": {
                    "name": "List user memories",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns memories in the effective user's scope. This operation has no pagination\ncursor or category filter. A capped response does not prove that the user has seen\nevery stored record or provide a complete all-records traversal guarantee.\n\n## Named request examples\n\n### conversations-listMemories-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"limit\": 1\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-02-request\n\nGuide request for Step 2: Let the user review the stored records. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"limit\": 100\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/list-memories",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "list-memories"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"limit\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Memories listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"memories\": [\n    {\n      \"id\": \"example_123\",\n      \"memory\": \"example\",\n      \"userId\": \"example_123\",\n      \"agentId\": \"example_123\",\n      \"appId\": \"example_123\",\n      \"runId\": \"example_123\",\n      \"metadata\": {},\n      \"score\": 1,\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Get a specific memory",
              "request": {
                "name": "Get a specific memory",
                "description": {
                  "type": "text/markdown",
                  "content": "Requests a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. See [Memory](/managed-agents/memory-knowledge) for the current limits.\n\n## Named request examples\n\n### conversations-getMemory-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"memoryId\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-03-request\n\nGuide request for Inspect the selected record before changing it. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"memoryId\": \"mem_abc123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/get-memory",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "get-memory"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"memoryId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-getMemory-response",
                  "originalRequest": {
                    "name": "Get a specific memory",
                    "description": {
                      "type": "text/markdown",
                      "content": "Requests a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. See [Memory](/managed-agents/memory-knowledge) for the current limits.\n\n## Named request examples\n\n### conversations-getMemory-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"memoryId\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-03-request\n\nGuide request for Inspect the selected record before changing it. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"memoryId\": \"mem_abc123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/get-memory",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "get-memory"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"memoryId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Memory returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"memory\": {\n    \"id\": \"example_123\",\n    \"memory\": \"example\",\n    \"userId\": \"example_123\",\n    \"agentId\": \"example_123\",\n    \"appId\": \"example_123\",\n    \"runId\": \"example_123\",\n    \"metadata\": {},\n    \"score\": 1,\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Update a memory",
              "request": {
                "name": "Update a memory",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. See [Memory](/managed-agents/memory-knowledge) for the current limits.\n\n## Named request examples\n\n### conversations-updateMemory-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"memoryId\": \"example_123\",\n  \"text\": \"Example text\"\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-04-request\n\nGuide request for Step 3: Correct an outdated preference. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"memoryId\": \"mem_abc123\",\n  \"text\": \"User is vegetarian, avoids gluten, and prefers organic produce\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/update-memory",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "update-memory"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"memoryId\": \"example_123\",\n  \"text\": \"Example text\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-updateMemory-response",
                  "originalRequest": {
                    "name": "Update a memory",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. See [Memory](/managed-agents/memory-knowledge) for the current limits.\n\n## Named request examples\n\n### conversations-updateMemory-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"memoryId\": \"example_123\",\n  \"text\": \"Example text\"\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-04-request\n\nGuide request for Step 3: Correct an outdated preference. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"memoryId\": \"mem_abc123\",\n  \"text\": \"User is vegetarian, avoids gluten, and prefers organic produce\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/update-memory",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "update-memory"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"memoryId\": \"example_123\",\n  \"text\": \"Example text\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Memory updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Delete a memory",
              "request": {
                "name": "Delete a memory",
                "description": {
                  "type": "text/markdown",
                  "content": "Requests deletion of a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. Deletion does not remove copies already included in conversation context or confirm backup erasure. See [Memory](/managed-agents/memory-knowledge).\n\n## Named request examples\n\n### conversations-deleteMemory-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"memoryId\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-05-request\n\nGuide request for Remove the selected record. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"memoryId\": \"mem_abc123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/delete-memory",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "delete-memory"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"memoryId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "conversations-deleteMemory-response",
                  "originalRequest": {
                    "name": "Delete a memory",
                    "description": {
                      "type": "text/markdown",
                      "content": "Requests deletion of a memory by ID. Full project/user ownership checks are not currently enforced for these by-ID operations. They are not a supported access boundary for an untrusted end-user client. Deletion does not remove copies already included in conversation context or confirm backup erasure. See [Memory](/managed-agents/memory-knowledge).\n\n## Named request examples\n\n### conversations-deleteMemory-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"memoryId\": \"example_123\"\n}\n\n```\n\n### cookbook-managed-agents-memory-knowledge-index-05-request\n\nGuide request for Remove the selected record. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"memoryId\": \"mem_abc123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/llm/delete-memory",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "llm",
                        "delete-memory"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"memoryId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Memory deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"success\": true\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Storage APIs",
      "description": "Manage files and folders, issue signed upload/download URLs, and inspect tracked storage usage.\n\nUser-facing calls act for the authenticated beneficiary. A backend `sk_…` key uses an authorized `X-On-Behalf-Of` selection with `users:impersonate`; a client `pk_…` key accompanies that user’s JWT from the configured issuer. Never expose a secret key in a client. Raw identity headers and recipient IDs are not authentication. See [Authentication](/core-platform/identity-access/authentication).\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nSigned URLs are bearer credentials and can be reused until their expiry. An upload URL is followed by direct upload and registration; issuing the URL neither registers the file nor reserves quota. Registration checks the stored object’s size. Its MIME metadata is not content validation.\n\n**Related guide:** [Files and storage](/core-platform/files-data)\n\n<span id=\"field-naming\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Folders",
          "description": {
            "content": "Folder management — create and delete directory containers. See the [Storage guide](/core-platform/files-data).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a new folder",
              "request": {
                "name": "Create a new folder",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates the requested folder entry at the specified path. It does not create intermediate parent entries; create those explicitly when needed.\n\n## Named request examples\n\n### storage-createFolder-request\n\nCreate a reports folder in the authenticated user’s storage namespace.\n\n```json\n\n{\n  \"folderPath\": \"reports\"\n}\n\n```\n\n### cookbook-core-platform-files-data-folders-01-request\n\nGuide request for Prepare a folder and add the first document. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/documents/work\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/create-folder",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "create-folder"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folderPath\": \"reports\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-createFolder-response",
                  "originalRequest": {
                    "name": "Create a new folder",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates the requested folder entry at the specified path. It does not create intermediate parent entries; create those explicitly when needed.\n\n## Named request examples\n\n### storage-createFolder-request\n\nCreate a reports folder in the authenticated user’s storage namespace.\n\n```json\n\n{\n  \"folderPath\": \"reports\"\n}\n\n```\n\n### cookbook-core-platform-files-data-folders-01-request\n\nGuide request for Prepare a folder and add the first document. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/documents/work\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/create-folder",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "create-folder"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"folderPath\": \"reports\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Folder created (or already existed)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"folder\": {\n    \"folderId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"parentPath\": \"documents/example.txt\",\n    \"createdAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"fileCount\": 1,\n    \"subfolderCount\": 1,\n    \"totalSizeBytes\": \"1\"\n  },\n  \"created\": true\n}"
                }
              ]
            },
            {
              "name": "Delete a folder",
              "request": {
                "name": "Delete a folder",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the selected folder entry and reports deletion counts on success.\n\nWith `recursive` false or omitted, the operation leaves descendants in place and\ndoes not require an empty folder. This option cannot safely test whether the\nproject still contains documents.\n\nWith `recursive: true`, it also attempts descendant file and folder deletion. A\nfailure can follow earlier object deletions, so inspect the resulting state before\nrecovery.\n\n## Named request examples\n\n### storage-deleteFolder-request\n\nDelete the selected empty folder; recursive deletion is not requested.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"recursive\": false\n}\n\n```\n\n### cookbook-core-platform-files-data-folders-02-request\n\nGuide request for Remove the project’s documents when the customer chooses. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/documents/work\",\n  \"recursive\": true\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/delete-folder",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "delete-folder"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folderPath\": \"reports\",\n  \"recursive\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-deleteFolder-response",
                  "originalRequest": {
                    "name": "Delete a folder",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the selected folder entry and reports deletion counts on success.\n\nWith `recursive` false or omitted, the operation leaves descendants in place and\ndoes not require an empty folder. This option cannot safely test whether the\nproject still contains documents.\n\nWith `recursive: true`, it also attempts descendant file and folder deletion. A\nfailure can follow earlier object deletions, so inspect the resulting state before\nrecovery.\n\n## Named request examples\n\n### storage-deleteFolder-request\n\nDelete the selected empty folder; recursive deletion is not requested.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"recursive\": false\n}\n\n```\n\n### cookbook-core-platform-files-data-folders-02-request\n\nGuide request for Remove the project’s documents when the customer chooses. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/documents/work\",\n  \"recursive\": true\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/delete-folder",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "delete-folder"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"folderPath\": \"reports\",\n  \"recursive\": false\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Folder deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true,\n  \"filesDeleted\": 1,\n  \"foldersDeleted\": 1\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Uploads & Downloads",
          "description": {
            "content": "File upload (inline and pre-signed) and pre-signed download URLs. See the [Storage guide](/core-platform/files-data) for both inline and large-file patterns.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Generate a pre-signed upload URL",
              "request": {
                "name": "Generate a pre-signed upload URL",
                "description": {
                  "type": "text/markdown",
                  "content": "Step 1: issues a time-limited signed URL for direct upload. `sizeBytes` is checked against current tracked quota and used as the signed upper size bound; it is not an atomic reservation or an exact-size assertion. Send the returned required headers, upload, and then register the returned fileId. The URL can be reused until expiry; treat it as a credential.\n\n## Named request examples\n\n### storage-generateUploadUrl-request\n\nRequest a signed upload for the six bytes Hello plus newline; send the returned required headers during upload.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"contentType\": \"text/plain\",\n  \"sizeBytes\": \"6\",\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-01-request\n\nGuide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/media\",\n  \"fileName\": \"video.mp4\",\n  \"contentType\": \"video/mp4\",\n  \"sizeBytes\": 52428800,\n  \"expiresSeconds\": 3600\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/generate-upload-url",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "generate-upload-url"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"contentType\": \"text/plain\",\n  \"sizeBytes\": \"6\",\n  \"expiresSeconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-generateUploadUrl-response",
                  "originalRequest": {
                    "name": "Generate a pre-signed upload URL",
                    "description": {
                      "type": "text/markdown",
                      "content": "Step 1: issues a time-limited signed URL for direct upload. `sizeBytes` is checked against current tracked quota and used as the signed upper size bound; it is not an atomic reservation or an exact-size assertion. Send the returned required headers, upload, and then register the returned fileId. The URL can be reused until expiry; treat it as a credential.\n\n## Named request examples\n\n### storage-generateUploadUrl-request\n\nRequest a signed upload for the six bytes Hello plus newline; send the returned required headers during upload.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"contentType\": \"text/plain\",\n  \"sizeBytes\": \"6\",\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-01-request\n\nGuide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/media\",\n  \"fileName\": \"video.mp4\",\n  \"contentType\": \"video/mp4\",\n  \"sizeBytes\": 52428800,\n  \"expiresSeconds\": 3600\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/generate-upload-url",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "generate-upload-url"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"contentType\": \"text/plain\",\n  \"sizeBytes\": \"6\",\n  \"expiresSeconds\": 900\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Upload URL generated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"url\": \"https://example.com/resource\",\n  \"fileId\": \"example_123\",\n  \"fullPath\": \"documents/example.txt\",\n  \"requiredHeaders\": {}\n}"
                },
                {
                  "name": "cookbook-core-platform-files-data-files-json-01-response",
                  "originalRequest": {
                    "name": "Generate a pre-signed upload URL",
                    "description": {
                      "type": "text/markdown",
                      "content": "Step 1: issues a time-limited signed URL for direct upload. `sizeBytes` is checked against current tracked quota and used as the signed upper size bound; it is not an atomic reservation or an exact-size assertion. Send the returned required headers, upload, and then register the returned fileId. The URL can be reused until expiry; treat it as a credential.\n\n## Named request examples\n\n### storage-generateUploadUrl-request\n\nRequest a signed upload for the six bytes Hello plus newline; send the returned required headers during upload.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"contentType\": \"text/plain\",\n  \"sizeBytes\": \"6\",\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-01-request\n\nGuide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/media\",\n  \"fileName\": \"video.mp4\",\n  \"contentType\": \"video/mp4\",\n  \"sizeBytes\": 52428800,\n  \"expiresSeconds\": 3600\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/generate-upload-url",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "generate-upload-url"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"contentType\": \"text/plain\",\n  \"sizeBytes\": \"6\",\n  \"expiresSeconds\": 900\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Upload URL generated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"url\": \"https://storage.googleapis.com/bucket/...\",\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"fullPath\": \"/media/video.mp4\",\n  \"requiredHeaders\": {\n    \"content-type\": \"video/mp4\",\n    \"x-goog-content-length-range\": \"0,52428800\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Register a file uploaded via pre-signed URL",
              "request": {
                "name": "Register a file uploaded via pre-signed URL",
                "description": {
                  "type": "text/markdown",
                  "content": "Step 3: after uploading, register the fileId with the same folderPath and intended fileName. The backend checks the object at the derived caller-scoped path and reads its stored size and content-type metadata. MIME metadata can be supplied by the uploader and is not byte/content validation. The signed-upload path does not compute a checksum.\n\nAn already registered fileId returns the existing record with registered false, which may be omitted. This retry behavior does not prove that a reused signed URL cannot subsequently alter the object. Missing uploaded objects return 404; quota and backend failures require reconciliation.\n\n## Named request examples\n\n### storage-registerUploadedFile-request\n\nAfter uploading, use the fileId returned by generate-upload-url and the same folderPath and fileName.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\"\n}\n\n```\n\n### cookbook-core-platform-files-data-files-03-request\n\nGuide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"folderPath\": \"/media\",\n  \"fileName\": \"video.mp4\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/register-uploaded-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "register-uploaded-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-registerUploadedFile-response",
                  "originalRequest": {
                    "name": "Register a file uploaded via pre-signed URL",
                    "description": {
                      "type": "text/markdown",
                      "content": "Step 3: after uploading, register the fileId with the same folderPath and intended fileName. The backend checks the object at the derived caller-scoped path and reads its stored size and content-type metadata. MIME metadata can be supplied by the uploader and is not byte/content validation. The signed-upload path does not compute a checksum.\n\nAn already registered fileId returns the existing record with registered false, which may be omitted. This retry behavior does not prove that a reused signed URL cannot subsequently alter the object. Missing uploaded objects return 404; quota and backend failures require reconciliation.\n\n## Named request examples\n\n### storage-registerUploadedFile-request\n\nAfter uploading, use the fileId returned by generate-upload-url and the same folderPath and fileName.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\"\n}\n\n```\n\n### cookbook-core-platform-files-data-files-03-request\n\nGuide request for Upload and confirm the recording. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"folderPath\": \"/media\",\n  \"fileName\": \"video.mp4\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/register-uploaded-file",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "register-uploaded-file"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File registered (or already registered)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"file\": {\n    \"fileId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"folderPath\": \"documents/example.txt\",\n    \"sizeBytes\": \"1\",\n    \"contentType\": \"Example text\",\n    \"uploadedAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"tags\": [\n      \"example\"\n    ],\n    \"description\": \"example\",\n    \"storageRef\": {\n      \"bucket\": \"example\",\n      \"key\": \"example_123\",\n      \"provider\": \"STORAGE_PROVIDER_GCS\"\n    },\n    \"checksum\": \"example\",\n    \"version\": 1\n  },\n  \"registered\": true\n}"
                }
              ]
            },
            {
              "name": "Generate a pre-signed download URL",
              "request": {
                "name": "Generate a pre-signed download URL",
                "description": {
                  "type": "text/markdown",
                  "content": "Generates a time-limited pre-signed URL for downloading a file directly from the storage backend.\n\n## Named request examples\n\n### storage-generateDownloadUrl-request\n\nRequest a short-lived download URL for an existing file.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-04-request\n\nGuide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"expiresSeconds\": 3600\n}\n\n```\n\n### cookbook-core-platform-files-data-files-json-03-request\n\nGuide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"responseContentDisposition\": \"attachment; filename=my-video.mp4\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/generate-download-url",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "generate-download-url"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"expiresSeconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-generateDownloadUrl-response",
                  "originalRequest": {
                    "name": "Generate a pre-signed download URL",
                    "description": {
                      "type": "text/markdown",
                      "content": "Generates a time-limited pre-signed URL for downloading a file directly from the storage backend.\n\n## Named request examples\n\n### storage-generateDownloadUrl-request\n\nRequest a short-lived download URL for an existing file.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-04-request\n\nGuide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"expiresSeconds\": 3600\n}\n\n```\n\n### cookbook-core-platform-files-data-files-json-03-request\n\nGuide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"responseContentDisposition\": \"attachment; filename=my-video.mp4\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/generate-download-url",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "generate-download-url"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"expiresSeconds\": 900\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Download URL generated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"url\": \"https://example.com/resource\",\n  \"file\": {\n    \"fileId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"folderPath\": \"documents/example.txt\",\n    \"sizeBytes\": \"1\",\n    \"contentType\": \"Example text\",\n    \"uploadedAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"tags\": [\n      \"example\"\n    ],\n    \"description\": \"example\",\n    \"storageRef\": {\n      \"bucket\": \"example\",\n      \"key\": \"example_123\",\n      \"provider\": \"STORAGE_PROVIDER_GCS\"\n    },\n    \"checksum\": \"example\",\n    \"version\": 1\n  }\n}"
                },
                {
                  "name": "cookbook-core-platform-files-data-files-json-02-response",
                  "originalRequest": {
                    "name": "Generate a pre-signed download URL",
                    "description": {
                      "type": "text/markdown",
                      "content": "Generates a time-limited pre-signed URL for downloading a file directly from the storage backend.\n\n## Named request examples\n\n### storage-generateDownloadUrl-request\n\nRequest a short-lived download URL for an existing file.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-04-request\n\nGuide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"expiresSeconds\": 3600\n}\n\n```\n\n### cookbook-core-platform-files-data-files-json-03-request\n\nGuide request for Let the customer reopen the attachment. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"responseContentDisposition\": \"attachment; filename=my-video.mp4\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/generate-download-url",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "generate-download-url"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"expiresSeconds\": 900\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Download URL generated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"url\": \"https://storage.googleapis.com/bucket/...\",\n  \"file\": {\n    \"name\": \"video.mp4\",\n    \"path\": \"/media/video.mp4\",\n    \"sizeBytes\": \"52428800\",\n    \"contentType\": \"video/mp4\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Generate pre-signed download URLs for multiple files",
              "request": {
                "name": "Generate pre-signed download URLs for multiple files",
                "description": {
                  "type": "text/markdown",
                  "content": "Generates download URLs in a batch. Inspect each result’s `success === true` and match by fileId; order is not guaranteed. Per-file errors can be returned independently, but malformed requests, authentication and request-level backend failures can still fail the whole call. URLs remain sensitive bearer credentials.\n\n## Named request examples\n\n### storage-batchGenerateDownloadUrls-request\n\nResolve existing file IDs together; inspect each result separately.\n\n```json\n\n{\n  \"fileIds\": [\n    \"0123456789abcdef0123456789abcdef\"\n  ],\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-05-request\n\nGuide request for Show several attachments on the case. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileIds\": [\n    \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n    \"b2c3d4e5f60718293a4b5c6d7e8f901a\"\n  ],\n  \"expiresSeconds\": 3600\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/batch-generate-download-urls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "batch-generate-download-urls"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileIds\": [\n    \"0123456789abcdef0123456789abcdef\"\n  ],\n  \"expiresSeconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-batchGenerateDownloadUrls-response",
                  "originalRequest": {
                    "name": "Generate pre-signed download URLs for multiple files",
                    "description": {
                      "type": "text/markdown",
                      "content": "Generates download URLs in a batch. Inspect each result’s `success === true` and match by fileId; order is not guaranteed. Per-file errors can be returned independently, but malformed requests, authentication and request-level backend failures can still fail the whole call. URLs remain sensitive bearer credentials.\n\n## Named request examples\n\n### storage-batchGenerateDownloadUrls-request\n\nResolve existing file IDs together; inspect each result separately.\n\n```json\n\n{\n  \"fileIds\": [\n    \"0123456789abcdef0123456789abcdef\"\n  ],\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-05-request\n\nGuide request for Show several attachments on the case. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileIds\": [\n    \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n    \"b2c3d4e5f60718293a4b5c6d7e8f901a\"\n  ],\n  \"expiresSeconds\": 3600\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/batch-generate-download-urls",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "batch-generate-download-urls"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileIds\": [\n    \"0123456789abcdef0123456789abcdef\"\n  ],\n  \"expiresSeconds\": 900\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Per-file download URL results returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"results\": [\n    {\n      \"fileId\": \"example_123\",\n      \"url\": \"https://example.com/resource\",\n      \"success\": true,\n      \"error\": \"example\",\n      \"contentType\": \"Example text\"\n    }\n  ]\n}"
                },
                {
                  "name": "cookbook-core-platform-files-data-files-json-04-response",
                  "originalRequest": {
                    "name": "Generate pre-signed download URLs for multiple files",
                    "description": {
                      "type": "text/markdown",
                      "content": "Generates download URLs in a batch. Inspect each result’s `success === true` and match by fileId; order is not guaranteed. Per-file errors can be returned independently, but malformed requests, authentication and request-level backend failures can still fail the whole call. URLs remain sensitive bearer credentials.\n\n## Named request examples\n\n### storage-batchGenerateDownloadUrls-request\n\nResolve existing file IDs together; inspect each result separately.\n\n```json\n\n{\n  \"fileIds\": [\n    \"0123456789abcdef0123456789abcdef\"\n  ],\n  \"expiresSeconds\": 900\n}\n\n```\n\n### cookbook-core-platform-files-data-files-05-request\n\nGuide request for Show several attachments on the case. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileIds\": [\n    \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n    \"b2c3d4e5f60718293a4b5c6d7e8f901a\"\n  ],\n  \"expiresSeconds\": 3600\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/batch-generate-download-urls",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "batch-generate-download-urls"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileIds\": [\n    \"0123456789abcdef0123456789abcdef\"\n  ],\n  \"expiresSeconds\": 900\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Per-file download URL results returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"results\": [\n    {\n      \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n      \"url\": \"https://storage.googleapis.com/bucket/...\",\n      \"success\": true,\n      \"contentType\": \"video/mp4\"\n    },\n    {\n      \"fileId\": \"b2c3d4e5f60718293a4b5c6d7e8f901a\",\n      \"error\": \"file not found\"\n    }\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Files",
          "description": {
            "content": "File listing, search, move, and delete. See the [Storage guide](/core-platform/files-data).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List files and folders in a directory",
              "request": {
                "name": "List files and folders in a directory",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists files and subfolders under the given folder path. The current file filter accepts upload-date fields but does not enforce them; do not rely on those fields to exclude records.\n\n## Named request examples\n\n### storage-listFiles-request\n\nList a bounded page of files from the reports folder.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-01-request\n\nGuide request for Populate the folder view. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/documents\",\n  \"recursive\": true,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-json-01-request\n\nGuide request for Populate the folder view. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/\",\n  \"recursive\": true,\n  \"filter\": {\n    \"extensions\": [\n      \".pdf\",\n      \".docx\"\n    ],\n    \"tags\": [\n      \"work\"\n    ],\n    \"minSizeBytes\": 1024,\n    \"nameContains\": \"report\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/list-files",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "list-files"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folderPath\": \"reports\",\n  \"pageSize\": 20\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-listFiles-response",
                  "originalRequest": {
                    "name": "List files and folders in a directory",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists files and subfolders under the given folder path. The current file filter accepts upload-date fields but does not enforce them; do not rely on those fields to exclude records.\n\n## Named request examples\n\n### storage-listFiles-request\n\nList a bounded page of files from the reports folder.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-01-request\n\nGuide request for Populate the folder view. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/documents\",\n  \"recursive\": true,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-json-01-request\n\nGuide request for Populate the folder view. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"folderPath\": \"/\",\n  \"recursive\": true,\n  \"filter\": {\n    \"extensions\": [\n      \".pdf\",\n      \".docx\"\n    ],\n    \"tags\": [\n      \"work\"\n    ],\n    \"minSizeBytes\": 1024,\n    \"nameContains\": \"report\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/list-files",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "list-files"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"folderPath\": \"reports\",\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File listing returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"files\": [\n    {\n      \"fileId\": \"example_123\",\n      \"name\": \"example\",\n      \"path\": \"documents/example.txt\",\n      \"folderPath\": \"documents/example.txt\",\n      \"sizeBytes\": \"1\",\n      \"contentType\": \"Example text\",\n      \"uploadedAt\": \"example\",\n      \"modifiedAt\": \"example\",\n      \"metadata\": {},\n      \"tags\": [\n        \"example\"\n      ],\n      \"description\": \"example\",\n      \"storageRef\": {\n        \"bucket\": \"example\",\n        \"key\": \"example_123\",\n        \"provider\": \"STORAGE_PROVIDER_GCS\"\n      },\n      \"checksum\": \"example\",\n      \"version\": 1\n    }\n  ],\n  \"folders\": [\n    {\n      \"folderId\": \"example_123\",\n      \"name\": \"example\",\n      \"path\": \"documents/example.txt\",\n      \"parentPath\": \"documents/example.txt\",\n      \"createdAt\": \"example\",\n      \"modifiedAt\": \"example\",\n      \"metadata\": {},\n      \"fileCount\": 1,\n      \"subfolderCount\": 1,\n      \"totalSizeBytes\": \"1\"\n    }\n  ],\n  \"nextPageToken\": \"example\",\n  \"totalCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Upload a file (deprecated)",
              "request": {
                "name": "Upload a file (deprecated)",
                "description": {
                  "type": "text/markdown",
                  "content": "**Deprecated — use the 3-step pre-signed flow instead** (`generate-upload-url` → `PUT` → `register-uploaded-file`).\n\nUploads file content synchronously to the specified folder. For large files, prefer the pre-signed flow to avoid sending the full content through this operation.\n\n## Named request examples\n\n### storage-uploadFile-request\n\nUpload the base64 encoding of Hello followed by a newline.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"content\": \"SGVsbG8K\",\n  \"contentType\": \"text/plain\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/upload-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "upload-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"content\": \"SGVsbG8K\",\n  \"contentType\": \"text/plain\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-uploadFile-response",
                  "originalRequest": {
                    "name": "Upload a file (deprecated)",
                    "description": {
                      "type": "text/markdown",
                      "content": "**Deprecated — use the 3-step pre-signed flow instead** (`generate-upload-url` → `PUT` → `register-uploaded-file`).\n\nUploads file content synchronously to the specified folder. For large files, prefer the pre-signed flow to avoid sending the full content through this operation.\n\n## Named request examples\n\n### storage-uploadFile-request\n\nUpload the base64 encoding of Hello followed by a newline.\n\n```json\n\n{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"content\": \"SGVsbG8K\",\n  \"contentType\": \"text/plain\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/upload-file",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "upload-file"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"folderPath\": \"reports\",\n  \"fileName\": \"welcome.txt\",\n  \"content\": \"SGVsbG8K\",\n  \"contentType\": \"text/plain\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File uploaded successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"file\": {\n    \"fileId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"folderPath\": \"documents/example.txt\",\n    \"sizeBytes\": \"1\",\n    \"contentType\": \"Example text\",\n    \"uploadedAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"tags\": [\n      \"example\"\n    ],\n    \"description\": \"example\",\n    \"storageRef\": {\n      \"bucket\": \"example\",\n      \"key\": \"example_123\",\n      \"provider\": \"STORAGE_PROVIDER_GCS\"\n    },\n    \"checksum\": \"example\",\n    \"version\": 1\n  },\n  \"uploaded\": true\n}"
                }
              ]
            },
            {
              "name": "Delete a file",
              "request": {
                "name": "Delete a file",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the stored object and tracked file metadata, releasing tracked quota on successful completion. This does not prove removal from backups, invalidate every copied URL immediately, or undo a download already in flight. Reconcile partial failures.\n\n## Named request examples\n\n### storage-deleteFile-request\n\nReplace fileId with an existing file returned by upload or listing.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-06-request\n\nGuide request for Delete a document the customer no longer needs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/delete-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "delete-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-deleteFile-response",
                  "originalRequest": {
                    "name": "Delete a file",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the stored object and tracked file metadata, releasing tracked quota on successful completion. This does not prove removal from backups, invalidate every copied URL immediately, or undo a download already in flight. Reconcile partial failures.\n\n## Named request examples\n\n### storage-deleteFile-request\n\nReplace fileId with an existing file returned by upload or listing.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-06-request\n\nGuide request for Delete a document the customer no longer needs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/delete-file",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "delete-file"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true,\n  \"spaceFreedBytes\": \"1\"\n}"
                }
              ]
            },
            {
              "name": "Move or rename a file",
              "request": {
                "name": "Move or rename a file",
                "description": {
                  "type": "text/markdown",
                  "content": "Moves or renames a stored file while preserving its identity.\n\n## Named request examples\n\n### storage-moveFile-request\n\nMove an existing file to the archive folder and rename it.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"destinationFolder\": \"archive\",\n  \"newName\": \"welcome-archived.txt\"\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-05-request\n\nGuide request for Archive a completed document. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"destinationFolder\": \"/archive\",\n  \"newName\": \"notes-2025-q1.txt\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/move-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "move-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"destinationFolder\": \"archive\",\n  \"newName\": \"welcome-archived.txt\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-moveFile-response",
                  "originalRequest": {
                    "name": "Move or rename a file",
                    "description": {
                      "type": "text/markdown",
                      "content": "Moves or renames a stored file while preserving its identity.\n\n## Named request examples\n\n### storage-moveFile-request\n\nMove an existing file to the archive folder and rename it.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"destinationFolder\": \"archive\",\n  \"newName\": \"welcome-archived.txt\"\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-05-request\n\nGuide request for Archive a completed document. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"destinationFolder\": \"/archive\",\n  \"newName\": \"notes-2025-q1.txt\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/move-file",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "move-file"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"destinationFolder\": \"archive\",\n  \"newName\": \"welcome-archived.txt\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File moved",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"file\": {\n    \"fileId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"folderPath\": \"documents/example.txt\",\n    \"sizeBytes\": \"1\",\n    \"contentType\": \"Example text\",\n    \"uploadedAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"tags\": [\n      \"example\"\n    ],\n    \"description\": \"example\",\n    \"storageRef\": {\n      \"bucket\": \"example\",\n      \"key\": \"example_123\",\n      \"provider\": \"STORAGE_PROVIDER_GCS\"\n    },\n    \"checksum\": \"example\",\n    \"version\": 1\n  },\n  \"moved\": true\n}"
                }
              ]
            },
            {
              "name": "Search files",
              "request": {
                "name": "Search files",
                "description": {
                  "type": "text/markdown",
                  "content": "Searches the effective user's tracked files using a case-insensitive filename\nsubstring or a case-insensitive complete tag. File contents, such as text inside\na PDF, are not searched.\n\nSupported `FileFilter` fields narrow candidates before the query is applied, and\nall listed tags must be present. The date filters\n[`uploadedAfter`](/api/models/file-filter#request-field-uploadedafter) and\n[`uploadedBefore`](/api/models/file-filter#request-field-uploadedbefore) are accepted\nbut currently not enforced; do not offer a date range as an effective filter.\n\n[`maxResults`](/api/storage/search-files#request-field-maxresults) caps a single\nresponse; search does not paginate. If results are too broad, let the customer\nrefine the name, tag or folder rather than promising a complete result set.\n\n## Named request examples\n\n### storage-searchFiles-request\n\nFind matching files within the authenticated user’s storage namespace.\n\n```json\n\n{\n  \"query\": \"welcome\",\n  \"maxResults\": 20\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-02-request\n\nGuide request for Find a report when its folder is unknown. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"query\": \"quarterly report\",\n  \"maxResults\": 10,\n  \"filter\": {\n    \"extensions\": [\n      \".pdf\"\n    ],\n    \"tags\": [\n      \"finance\"\n    ],\n    \"minSizeBytes\": 1024,\n    \"maxSizeBytes\": 52428800,\n    \"nameContains\": \"Q1\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/search-files",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "search-files"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"query\": \"welcome\",\n  \"maxResults\": 20\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-searchFiles-response",
                  "originalRequest": {
                    "name": "Search files",
                    "description": {
                      "type": "text/markdown",
                      "content": "Searches the effective user's tracked files using a case-insensitive filename\nsubstring or a case-insensitive complete tag. File contents, such as text inside\na PDF, are not searched.\n\nSupported `FileFilter` fields narrow candidates before the query is applied, and\nall listed tags must be present. The date filters\n[`uploadedAfter`](/api/models/file-filter#request-field-uploadedafter) and\n[`uploadedBefore`](/api/models/file-filter#request-field-uploadedbefore) are accepted\nbut currently not enforced; do not offer a date range as an effective filter.\n\n[`maxResults`](/api/storage/search-files#request-field-maxresults) caps a single\nresponse; search does not paginate. If results are too broad, let the customer\nrefine the name, tag or folder rather than promising a complete result set.\n\n## Named request examples\n\n### storage-searchFiles-request\n\nFind matching files within the authenticated user’s storage namespace.\n\n```json\n\n{\n  \"query\": \"welcome\",\n  \"maxResults\": 20\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-02-request\n\nGuide request for Find a report when its folder is unknown. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"query\": \"quarterly report\",\n  \"maxResults\": 10,\n  \"filter\": {\n    \"extensions\": [\n      \".pdf\"\n    ],\n    \"tags\": [\n      \"finance\"\n    ],\n    \"minSizeBytes\": 1024,\n    \"maxSizeBytes\": 52428800,\n    \"nameContains\": \"Q1\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/search-files",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "search-files"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"query\": \"welcome\",\n  \"maxResults\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Search results returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"files\": [\n    {\n      \"fileId\": \"example_123\",\n      \"name\": \"example\",\n      \"path\": \"documents/example.txt\",\n      \"folderPath\": \"documents/example.txt\",\n      \"sizeBytes\": \"1\",\n      \"contentType\": \"Example text\",\n      \"uploadedAt\": \"example\",\n      \"modifiedAt\": \"example\",\n      \"metadata\": {},\n      \"tags\": [\n        \"example\"\n      ],\n      \"description\": \"example\",\n      \"storageRef\": {\n        \"bucket\": \"example\",\n        \"key\": \"example_123\",\n        \"provider\": \"STORAGE_PROVIDER_GCS\"\n      },\n      \"checksum\": \"example\",\n      \"version\": 1\n    }\n  ],\n  \"totalMatches\": 1\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Metadata",
          "description": {
            "content": "File metadata and tag management. See the [Storage guide](/core-platform/files-data).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get file metadata",
              "request": {
                "name": "Get file metadata",
                "description": {
                  "type": "text/markdown",
                  "content": "Retrieves a file's tracked metadata without downloading its content.\n\n## Named request examples\n\n### storage-getFileMetadata-request\n\nRead metadata for an existing file returned by upload or listing.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-03-request\n\nGuide request for Open the selected document’s details. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/get-file-metadata",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "get-file-metadata"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-getFileMetadata-response",
                  "originalRequest": {
                    "name": "Get file metadata",
                    "description": {
                      "type": "text/markdown",
                      "content": "Retrieves a file's tracked metadata without downloading its content.\n\n## Named request examples\n\n### storage-getFileMetadata-request\n\nRead metadata for an existing file returned by upload or listing.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-03-request\n\nGuide request for Open the selected document’s details. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/get-file-metadata",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "get-file-metadata"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File metadata returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"file\": {\n    \"fileId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"folderPath\": \"documents/example.txt\",\n    \"sizeBytes\": \"1\",\n    \"contentType\": \"Example text\",\n    \"uploadedAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"tags\": [\n      \"example\"\n    ],\n    \"description\": \"example\",\n    \"storageRef\": {\n      \"bucket\": \"example\",\n      \"key\": \"example_123\",\n      \"provider\": \"STORAGE_PROVIDER_GCS\"\n    },\n    \"checksum\": \"example\",\n    \"version\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Update file metadata",
              "request": {
                "name": "Update file metadata",
                "description": {
                  "type": "text/markdown",
                  "content": "Replaces the metadata map and tag list when they survive decoding as nonnil values; it does not merge individual map keys. A nonempty description replaces the old description. This public shape has no reliable explicit clear operation for every empty value. Read the current record and submit the complete intended map/list; concurrent updates can overwrite one another.\n\n### Update metadata\n\nThis operation cannot clear tags with `[]`; an empty description leaves the previous description unchanged.\n\n## Named request examples\n\n### storage-updateFileMetadata-request\n\nSet descriptive metadata on an existing file.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"description\": \"Welcome message\",\n  \"tags\": [\n    \"onboarding\"\n  ],\n  \"metadata\": {\n    \"category\": \"help\"\n  }\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-04-request\n\nGuide request for Save the review labels without erasing other labels. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"metadata\": {\n    \"reviewed\": \"true\",\n    \"category\": \"internal\"\n  },\n  \"tags\": [\n    \"notes\",\n    \"reviewed\"\n  ],\n  \"description\": \"Meeting notes from Q1 planning\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/update-file-metadata",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "update-file-metadata"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"description\": \"Welcome message\",\n  \"tags\": [\n    \"onboarding\"\n  ],\n  \"metadata\": {\n    \"category\": \"help\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-updateFileMetadata-response",
                  "originalRequest": {
                    "name": "Update file metadata",
                    "description": {
                      "type": "text/markdown",
                      "content": "Replaces the metadata map and tag list when they survive decoding as nonnil values; it does not merge individual map keys. A nonempty description replaces the old description. This public shape has no reliable explicit clear operation for every empty value. Read the current record and submit the complete intended map/list; concurrent updates can overwrite one another.\n\n### Update metadata\n\nThis operation cannot clear tags with `[]`; an empty description leaves the previous description unchanged.\n\n## Named request examples\n\n### storage-updateFileMetadata-request\n\nSet descriptive metadata on an existing file.\n\n```json\n\n{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"description\": \"Welcome message\",\n  \"tags\": [\n    \"onboarding\"\n  ],\n  \"metadata\": {\n    \"category\": \"help\"\n  }\n}\n\n```\n\n### cookbook-core-platform-files-data-managing-04-request\n\nGuide request for Save the review labels without erasing other labels. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fileId\": \"a1b2c3d4e5f60718293a4b5c6d7e8f90\",\n  \"metadata\": {\n    \"reviewed\": \"true\",\n    \"category\": \"internal\"\n  },\n  \"tags\": [\n    \"notes\",\n    \"reviewed\"\n  ],\n  \"description\": \"Meeting notes from Q1 planning\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/update-file-metadata",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "update-file-metadata"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fileId\": \"0123456789abcdef0123456789abcdef\",\n  \"description\": \"Welcome message\",\n  \"tags\": [\n    \"onboarding\"\n  ],\n  \"metadata\": {\n    \"category\": \"help\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "File metadata updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"file\": {\n    \"fileId\": \"example_123\",\n    \"name\": \"example\",\n    \"path\": \"documents/example.txt\",\n    \"folderPath\": \"documents/example.txt\",\n    \"sizeBytes\": \"1\",\n    \"contentType\": \"Example text\",\n    \"uploadedAt\": \"example\",\n    \"modifiedAt\": \"example\",\n    \"metadata\": {},\n    \"tags\": [\n      \"example\"\n    ],\n    \"description\": \"example\",\n    \"storageRef\": {\n      \"bucket\": \"example\",\n      \"key\": \"example_123\",\n      \"provider\": \"STORAGE_PROVIDER_GCS\"\n    },\n    \"checksum\": \"example\",\n    \"version\": 1\n  },\n  \"updated\": true\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Quota & State",
          "description": {
            "content": "Storage quota usage and account state. See the [Storage guide](/core-platform/files-data).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get storage usage and quota",
              "request": {
                "name": "Get storage usage and quota",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the authenticated user's current tracked storage usage and quota.\n\n## Named request examples\n\n### storage-getStorageQuota-request\n\nRead quota and usage for the authenticated user’s storage namespace.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/get-storage-quota",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "get-storage-quota"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-getStorageQuota-response",
                  "originalRequest": {
                    "name": "Get storage usage and quota",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the authenticated user's current tracked storage usage and quota.\n\n## Named request examples\n\n### storage-getStorageQuota-request\n\nRead quota and usage for the authenticated user’s storage namespace.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/get-storage-quota",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "get-storage-quota"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Quota information returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"usedBytes\": \"1\",\n  \"quotaBytes\": \"1\",\n  \"fileCount\": 1,\n  \"folderCount\": 1,\n  \"usagePercentage\": 1\n}"
                },
                {
                  "name": "cookbook-core-platform-files-data-managing-json-02-response",
                  "originalRequest": {
                    "name": "Get storage usage and quota",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the authenticated user's current tracked storage usage and quota.\n\n## Named request examples\n\n### storage-getStorageQuota-request\n\nRead quota and usage for the authenticated user’s storage namespace.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/get-storage-quota",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "get-storage-quota"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Quota information returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"usedBytes\": \"1048576\",\n  \"quotaBytes\": \"1073741824\",\n  \"fileCount\": 15,\n  \"folderCount\": 4,\n  \"usagePercentage\": 0.098\n}"
                }
              ]
            },
            {
              "name": "Get storage state",
              "request": {
                "name": "Get storage state",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the effective user’s full tracked storage state without pagination. Intended for restricted debugging; large accounts can produce large responses. A storage record is not an inventory or erasure certificate for every object/backend copy.\n\n## Named request examples\n\n### storage-getState-request\n\nRead the authenticated user’s storage state; no file or folder selector is needed.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/get-state",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "get-state"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "storage-getState-response",
                  "originalRequest": {
                    "name": "Get storage state",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the effective user’s full tracked storage state without pagination. Intended for restricted debugging; large accounts can produce large responses. A storage record is not an inventory or erasure certificate for every object/backend copy.\n\n## Named request examples\n\n### storage-getState-request\n\nRead the authenticated user’s storage state; no file or folder selector is needed.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/storage/get-state",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "storage",
                        "get-state"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Full state returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"state\": {\n    \"userId\": \"example_123\",\n    \"folders\": {},\n    \"files\": {},\n    \"totalSizeBytes\": \"1\",\n    \"quotaBytes\": \"1\",\n    \"totalFileCount\": 1,\n    \"totalFolderCount\": 1,\n    \"createdAt\": \"example\",\n    \"lastModified\": \"example\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "End User APIs",
      "description": "Manage the effective user’s location, locale, default generation preferences and metadata. There is no arbitrary target-user field in these request bodies. Authorized backend calls can act on behalf of a user.\n\nUser-facing calls act for the authenticated beneficiary. A backend `sk_…` key uses an authorized `X-On-Behalf-Of` selection with `users:impersonate`; a client `pk_…` key accompanies that user’s JWT from the configured issuer. Never expose a secret key in a client. Raw identity headers and recipient IDs are not authentication. See [Authentication](/core-platform/identity-access/authentication).\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\n**Related guide:** [Manage end-user profiles](/core-platform/identity-access/end-users)\n\n<span id=\"field-naming\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Profile",
          "description": {
            "content": "Read the caller's end-user profile.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get the caller's end-user profile",
              "request": {
                "name": "Get the caller's end-user profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the caller's full end-user record — identity claims sourced from the\nidentity provider, profile settings the user has set, and lifecycle timestamps.\n\n:::note A user with no profile is not a 404\nIf no row exists yet, the call still succeeds and returns an empty [`endUser`](/api/end-users/get-end-user#response-field-enduser) object.\nTreat \"no profile yet\" and \"profile with no overrides\" identically — do not branch on the\ndifference when choosing settings. Treat the missing profile as an absent record;\ndefault-valued fields alone do not prove that an account exists or that deletion\ncompleted.\n:::\n\n## Named request examples\n\n### end-users-getEndUser-request\n\nRead the end user selected by authentication; no user identifier is accepted in this body.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/enduser/get",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "enduser",
                    "get"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "end-users-getEndUser-response",
                  "originalRequest": {
                    "name": "Get the caller's end-user profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the caller's full end-user record — identity claims sourced from the\nidentity provider, profile settings the user has set, and lifecycle timestamps.\n\n:::note A user with no profile is not a 404\nIf no row exists yet, the call still succeeds and returns an empty [`endUser`](/api/end-users/get-end-user#response-field-enduser) object.\nTreat \"no profile yet\" and \"profile with no overrides\" identically — do not branch on the\ndifference when choosing settings. Treat the missing profile as an absent record;\ndefault-valued fields alone do not prove that an account exists or that deletion\ncompleted.\n:::\n\n## Named request examples\n\n### end-users-getEndUser-request\n\nRead the end user selected by authentication; no user identifier is accepted in this body.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/get",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "get"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile returned (possibly empty if no row exists yet)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"endUser\": {\n    \"subject\": \"example\",\n    \"tenantId\": \"example_123\",\n    \"issuer\": \"example\",\n    \"projectId\": \"example_123\",\n    \"email\": \"user@example.com\",\n    \"emailVerified\": true,\n    \"name\": \"example\",\n    \"givenName\": \"example\",\n    \"familyName\": \"example\",\n    \"preferredUsername\": \"example\",\n    \"picture\": \"example\",\n    \"phoneNumber\": \"example\",\n    \"phoneNumberVerified\": true,\n    \"signInProvider\": \"example_123\",\n    \"authMethod\": \"example\",\n    \"locale\": \"en-US\",\n    \"zoneinfo\": \"example\",\n    \"customClaims\": {},\n    \"location\": {\n      \"latitude\": 1,\n      \"longitude\": 1,\n      \"city\": \"example\",\n      \"timezone\": \"example\"\n    },\n    \"localeOverride\": \"en-US\",\n    \"defaultGenerationConfig\": {\n      \"model\": \"example\",\n      \"models\": [\n        \"example\"\n      ],\n      \"systemPrompt\": \"Example text\",\n      \"transforms\": [\n        \"example\"\n      ],\n      \"temperature\": 1,\n      \"topP\": 1,\n      \"maxOutputTokens\": 1,\n      \"frequencyPenalty\": 1,\n      \"presencePenalty\": 1,\n      \"stopSequences\": [\n        \"example\"\n      ],\n      \"seed\": \"1\",\n      \"allowParallelToolCalls\": true,\n      \"topK\": 1,\n      \"repetitionPenalty\": 1,\n      \"topLogprobs\": 1,\n      \"minP\": 1,\n      \"topA\": 1,\n      \"user\": \"example\",\n      \"modalities\": [\n        \"MODALITY_TEXT\"\n      ],\n      \"languagePreference\": \"en-US\",\n      \"requestTimeoutSeconds\": 1,\n      \"clearTools\": true\n    },\n    \"metadata\": {},\n    \"firstSeenAt\": \"2026-09-16T12:00:00Z\",\n    \"lastSeenAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                },
                {
                  "name": "cookbook-core-platform-identity-access-end-users-json-01-response",
                  "originalRequest": {
                    "name": "Get the caller's end-user profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the caller's full end-user record — identity claims sourced from the\nidentity provider, profile settings the user has set, and lifecycle timestamps.\n\n:::note A user with no profile is not a 404\nIf no row exists yet, the call still succeeds and returns an empty [`endUser`](/api/end-users/get-end-user#response-field-enduser) object.\nTreat \"no profile yet\" and \"profile with no overrides\" identically — do not branch on the\ndifference when choosing settings. Treat the missing profile as an absent record;\ndefault-valued fields alone do not prove that an account exists or that deletion\ncompleted.\n:::\n\n## Named request examples\n\n### end-users-getEndUser-request\n\nRead the end user selected by authentication; no user identifier is accepted in this body.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/get",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "get"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile returned (possibly empty if no row exists yet)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"endUser\": {\n    \"subject\": \"user_123\",\n    \"tenantId\": \"tenant_abc\",\n    \"email\": \"jane@example.com\",\n    \"emailVerified\": true,\n    \"name\": \"Jane Doe\",\n    \"givenName\": \"Jane\",\n    \"picture\": \"https://…\",\n    \"signInProvider\": \"google.com\",\n    \"locale\": \"en-US\",\n    \"zoneinfo\": \"Europe/London\",\n    \"location\": {\n      \"latitude\": 51.5072,\n      \"longitude\": -0.1276,\n      \"timezone\": \"Europe/London\",\n      \"updatedAt\": \"2026-08-14T09:31:02Z\"\n    },\n    \"localeOverride\": \"es-MX\",\n    \"defaultGenerationConfig\": {\n      \"model\": \"google/gemini-3.6-flash\",\n      \"temperature\": 0.4,\n      \"languagePreference\": \"es\"\n    },\n    \"metadata\": {\n      \"preferredView\": \"compact\"\n    },\n    \"firstSeenAt\": \"2026-01-14T09:12:00Z\",\n    \"lastSeenAt\": \"2026-08-14T09:30:58Z\",\n    \"updatedAt\": \"2026-08-14T09:31:02Z\",\n    \"createdAt\": \"2026-01-14T09:12:00Z\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Preferences",
          "description": {
            "content": "Update the caller's location, locale, default generation config, and metadata.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Update the caller's location",
              "request": {
                "name": "Update the caller's location",
                "description": {
                  "type": "text/markdown",
                  "content": "Sets the caller's coordinates. The IANA timezone is **derived server-side** from\nthe coordinates and returned on the response — do not send a timezone.\n\nCoordinates (0, 0) are a real location, not a deletion command. This operation does not offer a location-clear control.\n\n## Named request examples\n\n### end-users-updateLocation-request\n\nSet the authenticated end user’s location to the supplied coordinates.\n\n```json\n\n{\n  \"latitude\": 37.7749,\n  \"longitude\": -122.4194\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-05-request\n\nGuide request for Variant: use location for local-time context. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"latitude\": 51.5072,\n  \"longitude\": -0.1276\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/enduser/update-location",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "enduser",
                    "update-location"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"latitude\": 37.7749,\n  \"longitude\": -122.4194\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "end-users-updateLocation-response",
                  "originalRequest": {
                    "name": "Update the caller's location",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sets the caller's coordinates. The IANA timezone is **derived server-side** from\nthe coordinates and returned on the response — do not send a timezone.\n\nCoordinates (0, 0) are a real location, not a deletion command. This operation does not offer a location-clear control.\n\n## Named request examples\n\n### end-users-updateLocation-request\n\nSet the authenticated end user’s location to the supplied coordinates.\n\n```json\n\n{\n  \"latitude\": 37.7749,\n  \"longitude\": -122.4194\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-05-request\n\nGuide request for Variant: use location for local-time context. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"latitude\": 51.5072,\n  \"longitude\": -0.1276\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/update-location",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "update-location"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"latitude\": 37.7749,\n  \"longitude\": -122.4194\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Location updated; response carries the derived timezone",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"location\": {\n    \"latitude\": 1,\n    \"longitude\": 1,\n    \"city\": \"example\",\n    \"timezone\": \"example\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                },
                {
                  "name": "cookbook-core-platform-identity-access-end-users-json-06-response",
                  "originalRequest": {
                    "name": "Update the caller's location",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sets the caller's coordinates. The IANA timezone is **derived server-side** from\nthe coordinates and returned on the response — do not send a timezone.\n\nCoordinates (0, 0) are a real location, not a deletion command. This operation does not offer a location-clear control.\n\n## Named request examples\n\n### end-users-updateLocation-request\n\nSet the authenticated end user’s location to the supplied coordinates.\n\n```json\n\n{\n  \"latitude\": 37.7749,\n  \"longitude\": -122.4194\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-05-request\n\nGuide request for Variant: use location for local-time context. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"latitude\": 51.5072,\n  \"longitude\": -0.1276\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/update-location",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "update-location"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"latitude\": 37.7749,\n  \"longitude\": -122.4194\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Location updated; response carries the derived timezone",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"location\": {\n    \"latitude\": 51.5072,\n    \"longitude\": -0.1276,\n    \"timezone\": \"Europe/London\",\n    \"updatedAt\": \"2026-08-14T09:31:02Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Update the caller's locale override",
              "request": {
                "name": "Update the caller's locale override",
                "description": {
                  "type": "text/markdown",
                  "content": "Sets a BCP-47 locale override for the caller, e.g. `es-MX`. This overrides the\nlocale supplied by the identity provider.\n\nSend an **empty string** to clear the override and fall back to the\nidentity-provider locale.\n\n## Named request examples\n\n### end-users-updateLocale-request\n\nSet the authenticated end user’s locale override.\n\n```json\n\n{\n  \"locale\": \"en-US\"\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-02-request\n\nGuide request for 2. Save the user’s preferred language. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"locale\": \"es-MX\"\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-json-02-request\n\nGuide request for 2. Save the user’s preferred language. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"locale\": \"\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/enduser/update-locale",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "enduser",
                    "update-locale"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"locale\": \"en-US\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "end-users-updateLocale-response",
                  "originalRequest": {
                    "name": "Update the caller's locale override",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sets a BCP-47 locale override for the caller, e.g. `es-MX`. This overrides the\nlocale supplied by the identity provider.\n\nSend an **empty string** to clear the override and fall back to the\nidentity-provider locale.\n\n## Named request examples\n\n### end-users-updateLocale-request\n\nSet the authenticated end user’s locale override.\n\n```json\n\n{\n  \"locale\": \"en-US\"\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-02-request\n\nGuide request for 2. Save the user’s preferred language. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"locale\": \"es-MX\"\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-json-02-request\n\nGuide request for 2. Save the user’s preferred language. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"locale\": \"\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/update-locale",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "update-locale"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"locale\": \"en-US\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Locale override updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Update the caller's default generation config",
              "request": {
                "name": "Update the caller's default generation config",
                "description": {
                  "type": "text/markdown",
                  "content": "Stores the caller's generation preferences. The generation path fills fields\nleft unset by the selected per-send, profile or conversation configuration;\nalready set values remain unchanged. Explicitly present sampling values,\nincluding zero, preserve their presence. Model/provider support determines\nwhich accepted controls affect a response.\n\nOnly user-settable controls are accepted. A recognized operational setting or a\nmodel outside the platform allowlist fails the whole request; settings are not\nsilently removed to make a config acceptable. Read the saved profile after an\nupdate rather than assuming every submitted setting took effect.\n\n## Named request examples\n\n### end-users-updateDefaultGenerationConfig-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"config\": {\n    \"languagePreference\": \"en-US\"\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-03-request\n\nGuide request for 3. Offer supported model and response preferences. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"config\": {\n    \"model\": \"google/gemini-3.6-flash\",\n    \"temperature\": 0.4,\n    \"maxOutputTokens\": 2048,\n    \"languagePreference\": \"es\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/enduser/update-generation-config",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "enduser",
                    "update-generation-config"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"config\": {\n    \"languagePreference\": \"en-US\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "end-users-updateDefaultGenerationConfig-response",
                  "originalRequest": {
                    "name": "Update the caller's default generation config",
                    "description": {
                      "type": "text/markdown",
                      "content": "Stores the caller's generation preferences. The generation path fills fields\nleft unset by the selected per-send, profile or conversation configuration;\nalready set values remain unchanged. Explicitly present sampling values,\nincluding zero, preserve their presence. Model/provider support determines\nwhich accepted controls affect a response.\n\nOnly user-settable controls are accepted. A recognized operational setting or a\nmodel outside the platform allowlist fails the whole request; settings are not\nsilently removed to make a config acceptable. Read the saved profile after an\nupdate rather than assuming every submitted setting took effect.\n\n## Named request examples\n\n### end-users-updateDefaultGenerationConfig-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"config\": {\n    \"languagePreference\": \"en-US\"\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-03-request\n\nGuide request for 3. Offer supported model and response preferences. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"config\": {\n    \"model\": \"google/gemini-3.6-flash\",\n    \"temperature\": 0.4,\n    \"maxOutputTokens\": 2048,\n    \"languagePreference\": \"es\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/update-generation-config",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "update-generation-config"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"config\": {\n    \"languagePreference\": \"en-US\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Default generation config updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Update the caller's metadata",
              "request": {
                "name": "Update the caller's metadata",
                "description": {
                  "type": "text/markdown",
                  "content": "Merges the supplied key/value pairs into the caller's metadata map.\n\nThis is a **merge, not a replace**: keys you omit are left untouched. To delete a key,\nsend it with an empty-string value. Example:\n\nBefore:\n```json\n{\"preferredView\": \"expanded\", \"dismissedWelcome\": \"true\", \"referralCode\": \"SPRING24\"}\n```\n\nAfter calling `update-metadata` with `{\"preferredView\": \"compact\", \"dismissedWelcome\": \"\"}`:\n```json\n{\"preferredView\": \"compact\", \"referralCode\": \"SPRING24\"}\n```\n\n`preferredView` is overwritten, `dismissedWelcome` is deleted (empty string), and `referralCode`\nis untouched.\n\n## Named request examples\n\n### end-users-updateMetadata-request\n\nMerge a metadata key for the authenticated end user.\n\n```json\n\n{\n  \"metadata\": {\n    \"preferred_destination\": \"Paris\"\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-04-request\n\nGuide request for Variant: remember a display preference. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"metadata\": {\n    \"preferredView\": \"compact\",\n    \"dismissedWelcome\": \"true\"\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-json-05-request\n\nGuide request for Variant: remember a display preference. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"metadata\": {\n    \"dismissedWelcome\": \"\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/enduser/update-metadata",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "enduser",
                    "update-metadata"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"metadata\": {\n    \"preferred_destination\": \"Paris\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "end-users-updateMetadata-response",
                  "originalRequest": {
                    "name": "Update the caller's metadata",
                    "description": {
                      "type": "text/markdown",
                      "content": "Merges the supplied key/value pairs into the caller's metadata map.\n\nThis is a **merge, not a replace**: keys you omit are left untouched. To delete a key,\nsend it with an empty-string value. Example:\n\nBefore:\n```json\n{\"preferredView\": \"expanded\", \"dismissedWelcome\": \"true\", \"referralCode\": \"SPRING24\"}\n```\n\nAfter calling `update-metadata` with `{\"preferredView\": \"compact\", \"dismissedWelcome\": \"\"}`:\n```json\n{\"preferredView\": \"compact\", \"referralCode\": \"SPRING24\"}\n```\n\n`preferredView` is overwritten, `dismissedWelcome` is deleted (empty string), and `referralCode`\nis untouched.\n\n## Named request examples\n\n### end-users-updateMetadata-request\n\nMerge a metadata key for the authenticated end user.\n\n```json\n\n{\n  \"metadata\": {\n    \"preferred_destination\": \"Paris\"\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-04-request\n\nGuide request for Variant: remember a display preference. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"metadata\": {\n    \"preferredView\": \"compact\",\n    \"dismissedWelcome\": \"true\"\n  }\n}\n\n```\n\n### cookbook-core-platform-identity-access-end-users-json-05-request\n\nGuide request for Variant: remember a display preference. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"metadata\": {\n    \"dismissedWelcome\": \"\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/enduser/update-metadata",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "enduser",
                        "update-metadata"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"metadata\": {\n    \"preferred_destination\": \"Paris\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Metadata merged",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Notification APIs",
      "description": "Register devices, read inbox messages and manage notification preferences, workflows and dispatch. Provider and channel availability depend on deployment configuration.\n\nUser-facing calls act for the authenticated beneficiary. A backend `sk_…` key uses an authorized `X-On-Behalf-Of` selection with `users:impersonate`; a client `pk_…` key accompanies that user’s JWT from the configured issuer. Never expose a secret key in a client. Raw identity headers and recipient IDs are not authentication. See [Authentication](/core-platform/identity-access/authentication).\n\nPublic management operations under `/manage/` belong in trusted backend tooling. The API accepts a verified backend key or configured standalone JWT for tenant-context management; it does not enforce an operation-specific admin role or permission there. Do not treat this acceptance as a secure admin authorization contract. Restrict access at your application boundary. Get/update/delete of the caller’s subscriber profile still require user context.\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nSend acknowledgements mean the provider accepted a trigger, not that a recipient received or read it. Preference state, channel registration and topic membership do not by themselves establish consent or sending authority.\n\n**Related guide:** [Notifications](/core-platform/notifications)\n\n<span id=\"field-naming\"></span>\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "User: Channel Registration",
          "description": {
            "content": "Register and manage push notification devices and channels. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Register a push notification device",
              "request": {
                "name": "Register a push notification device",
                "description": {
                  "type": "text/markdown",
                  "content": "Registers an FCM device token for push notifications. Associates the token with the user's subscriber profile.\n\n## Named request examples\n\n### notifications-registerPushDevice-request\n\nRegister the selected user’s actual device token; the displayed token is a placeholder.\n\n```json\n\n{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-05-request\n\nGuide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fcmToken\": \"firebase-cloud-messaging-token\",\n  \"platform\": \"PLATFORM_IOS\",\n  \"deviceId\": \"device-unique-id\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/register-push-device",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "register-push-device"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-registerPushDevice-response",
                  "originalRequest": {
                    "name": "Register a push notification device",
                    "description": {
                      "type": "text/markdown",
                      "content": "Registers an FCM device token for push notifications. Associates the token with the user's subscriber profile.\n\n## Named request examples\n\n### notifications-registerPushDevice-request\n\nRegister the selected user’s actual device token; the displayed token is a placeholder.\n\n```json\n\n{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-05-request\n\nGuide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fcmToken\": \"firebase-cloud-messaging-token\",\n  \"platform\": \"PLATFORM_IOS\",\n  \"deviceId\": \"device-unique-id\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/register-push-device",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "register-push-device"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Device registered successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"success\": true,\n  \"subscriberId\": \"example_123\"\n}"
                },
                {
                  "name": "cookbook-managed-agents-conversations-build-chat-assistant-json-06-response",
                  "originalRequest": {
                    "name": "Register a push notification device",
                    "description": {
                      "type": "text/markdown",
                      "content": "Registers an FCM device token for push notifications. Associates the token with the user's subscriber profile.\n\n## Named request examples\n\n### notifications-registerPushDevice-request\n\nRegister the selected user’s actual device token; the displayed token is a placeholder.\n\n```json\n\n{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-05-request\n\nGuide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fcmToken\": \"firebase-cloud-messaging-token\",\n  \"platform\": \"PLATFORM_IOS\",\n  \"deviceId\": \"device-unique-id\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/register-push-device",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "register-push-device"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Device registered successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"subscriberId\": \"user_123\",\n  \"success\": true\n}"
                }
              ]
            },
            {
              "name": "Unregister a push notification device",
              "request": {
                "name": "Unregister a push notification device",
                "description": {
                  "type": "text/markdown",
                  "content": "Removes an FCM device token from the user's subscriber profile.\n\n## Named request examples\n\n### notifications-unregisterPushDevice-request\n\nRemove a device token previously registered for the selected user.\n\n```json\n\n{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-06-request\n\nGuide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fcmToken\": \"firebase-cloud-messaging-token\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/unregister-push-device",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "unregister-push-device"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-unregisterPushDevice-response",
                  "originalRequest": {
                    "name": "Unregister a push notification device",
                    "description": {
                      "type": "text/markdown",
                      "content": "Removes an FCM device token from the user's subscriber profile.\n\n## Named request examples\n\n### notifications-unregisterPushDevice-request\n\nRemove a device token previously registered for the selected user.\n\n```json\n\n{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}\n\n```\n\n### cookbook-managed-agents-conversations-build-chat-assistant-06-request\n\nGuide request for Variant: bring the user back when a notification arrives. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fcmToken\": \"firebase-cloud-messaging-token\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/unregister-push-device",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "unregister-push-device"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fcmToken\": \"REPLACE_WITH_DEVICE_FCM_TOKEN\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Device unregistered successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"subscriberId\": \"example_123\",\n  \"remainingCredentialCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Get registered notification channels",
              "request": {
                "name": "Get registered notification channels",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the list of notification channels and their registration status for the authenticated user.\n\n## Named request examples\n\n### notifications-getRegisteredChannels-request\n\nRead the notification channels registered for the selected user.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/get-registered-channels",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "get-registered-channels"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getRegisteredChannels-response",
                  "originalRequest": {
                    "name": "Get registered notification channels",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the list of notification channels and their registration status for the authenticated user.\n\n## Named request examples\n\n### notifications-getRegisteredChannels-request\n\nRead the notification channels registered for the selected user.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/get-registered-channels",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "get-registered-channels"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Channels retrieved successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"channels\": [\n    {\n      \"channel\": \"CHANNEL_PUSH\",\n      \"registered\": true,\n      \"credentialCount\": 1\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Get an inbox session token",
              "request": {
                "name": "Get an inbox session token",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a session token and connection URLs for the real-time in-app inbox. The token is short-lived and should be refreshed before expiry.\n\n## Named request examples\n\n### notifications-getInboxSession-request\n\nCreate an inbox session for the selected user; identity comes from authentication.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/get-inbox-session",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "get-inbox-session"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getInboxSession-response",
                  "originalRequest": {
                    "name": "Get an inbox session token",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a session token and connection URLs for the real-time in-app inbox. The token is short-lived and should be refreshed before expiry.\n\n## Named request examples\n\n### notifications-getInboxSession-request\n\nCreate an inbox session for the selected user; identity comes from authentication.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/get-inbox-session",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "get-inbox-session"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Inbox session created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"token\": \"example\",\n  \"socketUrl\": \"https://example.com/resource\",\n  \"expiresIn\": \"1\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "User: In-App Inbox",
          "description": {
            "content": "Real-time in-app inbox — session token, feed, mark, and delete. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get inbox feed messages",
              "request": {
                "name": "Get inbox feed messages",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of in-app inbox messages for the authenticated user,\napplying the supplied selection criteria.\n\n## Named request examples\n\n### notifications-getInboxFeed-request\n\nRead the selected user’s inbox using default paging and filters.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/get-inbox-feed",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "get-inbox-feed"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getInboxFeed-response",
                  "originalRequest": {
                    "name": "Get inbox feed messages",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of in-app inbox messages for the authenticated user,\napplying the supplied selection criteria.\n\n## Named request examples\n\n### notifications-getInboxFeed-request\n\nRead the selected user’s inbox using default paging and filters.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/get-inbox-feed",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "get-inbox-feed"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Inbox feed retrieved successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messages\": [\n    {\n      \"messageId\": \"example_123\",\n      \"notificationId\": \"example_123\",\n      \"title\": \"example\",\n      \"body\": \"example\",\n      \"data\": {},\n      \"deepLink\": \"example\",\n      \"imageUrl\": \"https://example.com/resource\",\n      \"status\": \"MESSAGE_STATUS_UNSEEN\",\n      \"category\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"seenAt\": \"2026-09-16T12:00:00Z\",\n      \"readAt\": \"2026-09-16T12:00:00Z\",\n      \"actions\": [\n        {\n          \"actionId\": \"example_123\",\n          \"label\": \"example\",\n          \"url\": \"https://example.com/resource\",\n          \"isPrimary\": true,\n          \"completed\": true\n        }\n      ],\n      \"tags\": [\n        \"example\"\n      ],\n      \"archived\": true,\n      \"archivedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"totalCount\": 1,\n  \"page\": 1,\n  \"pageSize\": 1,\n  \"hasMore\": true\n}"
                }
              ]
            },
            {
              "name": "Get unseen and unread inbox counts",
              "request": {
                "name": "Get unseen and unread inbox counts",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the number of unseen and unread messages in the user's inbox, optionally filtered by feed IDs.\n\nCounts are capped. Inspect the overflow flags before treating them as exact totals.\n\n## Named request examples\n\n### notifications-getInboxUnseenCount-request\n\nCount unseen messages in the selected user’s inbox.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/get-inbox-unseen-count",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "get-inbox-unseen-count"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getInboxUnseenCount-response",
                  "originalRequest": {
                    "name": "Get unseen and unread inbox counts",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the number of unseen and unread messages in the user's inbox, optionally filtered by feed IDs.\n\nCounts are capped. Inspect the overflow flags before treating them as exact totals.\n\n## Named request examples\n\n### notifications-getInboxUnseenCount-request\n\nCount unseen messages in the selected user’s inbox.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/get-inbox-unseen-count",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "get-inbox-unseen-count"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Counts retrieved successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"unseenCount\": 1,\n  \"unreadCount\": 1,\n  \"hasMoreUnseen\": true,\n  \"hasMoreUnread\": true\n}"
                }
              ]
            },
            {
              "name": "Mark a single inbox message",
              "request": {
                "name": "Mark a single inbox message",
                "description": {
                  "type": "text/markdown",
                  "content": "Marks a specific inbox message as seen, read, unseen, or unread.\n\n## Named request examples\n\n### notifications-markInboxMessageAs-request\n\nMark an existing inbox message as read.\n\n```json\n\n{\n  \"messageId\": \"msg_123\",\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/mark-inbox-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "mark-inbox-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"messageId\": \"msg_123\",\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-markInboxMessageAs-response",
                  "originalRequest": {
                    "name": "Mark a single inbox message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Marks a specific inbox message as seen, read, unseen, or unread.\n\n## Named request examples\n\n### notifications-markInboxMessageAs-request\n\nMark an existing inbox message as read.\n\n```json\n\n{\n  \"messageId\": \"msg_123\",\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/mark-inbox-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "mark-inbox-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"messageId\": \"msg_123\",\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message marked successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"messages\": [\n    {\n      \"messageId\": \"example_123\",\n      \"channel\": \"example\",\n      \"read\": true,\n      \"seen\": true,\n      \"archived\": true,\n      \"content\": \"Example text\",\n      \"subject\": \"example\",\n      \"status\": \"example\",\n      \"createdAt\": \"example\",\n      \"lastReadDate\": \"example\",\n      \"lastSeenDate\": \"example\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Mark all inbox messages",
              "request": {
                "name": "Mark all inbox messages",
                "description": {
                  "type": "text/markdown",
                  "content": "Marks all inbox messages as seen, read, unseen, or unread. Optionally scoped to specific feed IDs.\n\n## Named request examples\n\n### notifications-markAllInboxMessagesAs-request\n\nMark all inbox messages in the selected user scope as read.\n\n```json\n\n{\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/mark-all-inbox-messages",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "mark-all-inbox-messages"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-markAllInboxMessagesAs-response",
                  "originalRequest": {
                    "name": "Mark all inbox messages",
                    "description": {
                      "type": "text/markdown",
                      "content": "Marks all inbox messages as seen, read, unseen, or unread. Optionally scoped to specific feed IDs.\n\n## Named request examples\n\n### notifications-markAllInboxMessagesAs-request\n\nMark all inbox messages in the selected user scope as read.\n\n```json\n\n{\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/mark-all-inbox-messages",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "mark-all-inbox-messages"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"markAs\": \"MESSAGE_STATUS_READ\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Messages marked successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"updatedCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Delete an inbox message",
              "request": {
                "name": "Delete an inbox message",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the specified inbox message in the effective user’s inbox. This does not recall copies already delivered through other channels or attest to backup erasure.\n\n## Named request examples\n\n### notifications-deleteInboxMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"messageId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/delete-inbox-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "delete-inbox-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"messageId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-deleteInboxMessage-response",
                  "originalRequest": {
                    "name": "Delete an inbox message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the specified inbox message in the effective user’s inbox. This does not recall copies already delivered through other channels or attest to backup erasure.\n\n## Named request examples\n\n### notifications-deleteInboxMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"messageId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/delete-inbox-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "delete-inbox-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"messageId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message deleted successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Archive an inbox message",
              "request": {
                "name": "Archive an inbox message",
                "description": {
                  "type": "text/markdown",
                  "content": "Archives a single inbox message. Archived messages are hidden from the default feed but retained.\n\n## Named request examples\n\n### notifications-archiveInboxMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/archive-inbox-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "archive-inbox-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"notificationId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-archiveInboxMessage-response",
                  "originalRequest": {
                    "name": "Archive an inbox message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Archives a single inbox message. Archived messages are hidden from the default feed but retained.\n\n## Named request examples\n\n### notifications-archiveInboxMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/archive-inbox-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "archive-inbox-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"notificationId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message archived",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Unarchive an inbox message",
              "request": {
                "name": "Unarchive an inbox message",
                "description": {
                  "type": "text/markdown",
                  "content": "Restores a previously archived inbox message back into the default feed.\n\n## Named request examples\n\n### notifications-unarchiveInboxMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/unarchive-inbox-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "unarchive-inbox-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"notificationId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-unarchiveInboxMessage-response",
                  "originalRequest": {
                    "name": "Unarchive an inbox message",
                    "description": {
                      "type": "text/markdown",
                      "content": "Restores a previously archived inbox message back into the default feed.\n\n## Named request examples\n\n### notifications-unarchiveInboxMessage-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/unarchive-inbox-message",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "unarchive-inbox-message"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"notificationId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Message unarchived",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Archive all inbox messages",
              "request": {
                "name": "Archive all inbox messages",
                "description": {
                  "type": "text/markdown",
                  "content": "Archives all inbox messages for the authenticated user. Optionally scoped to specific workflow tags (OR logic).\n\n## Named request examples\n\n### notifications-archiveAllInboxMessages-request\n\nArchive all messages in the selected user’s inbox; no tag filter is supplied.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/archive-all-inbox-messages",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "archive-all-inbox-messages"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-archiveAllInboxMessages-response",
                  "originalRequest": {
                    "name": "Archive all inbox messages",
                    "description": {
                      "type": "text/markdown",
                      "content": "Archives all inbox messages for the authenticated user. Optionally scoped to specific workflow tags (OR logic).\n\n## Named request examples\n\n### notifications-archiveAllInboxMessages-request\n\nArchive all messages in the selected user’s inbox; no tag filter is supplied.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/archive-all-inbox-messages",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "archive-all-inbox-messages"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Messages archived",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"archivedCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Archive all read inbox messages",
              "request": {
                "name": "Archive all read inbox messages",
                "description": {
                  "type": "text/markdown",
                  "content": "Archives every already-read inbox message for the authenticated user. Optionally scoped to specific workflow tags (OR logic).\n\n## Named request examples\n\n### notifications-archiveAllReadInboxMessages-request\n\nArchive all read messages in the selected user’s inbox; no tag filter is supplied.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/archive-all-read-inbox-messages",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "archive-all-read-inbox-messages"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-archiveAllReadInboxMessages-response",
                  "originalRequest": {
                    "name": "Archive all read inbox messages",
                    "description": {
                      "type": "text/markdown",
                      "content": "Archives every already-read inbox message for the authenticated user. Optionally scoped to specific workflow tags (OR logic).\n\n## Named request examples\n\n### notifications-archiveAllReadInboxMessages-request\n\nArchive all read messages in the selected user’s inbox; no tag filter is supplied.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/archive-all-read-inbox-messages",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "archive-all-read-inbox-messages"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Read messages archived",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"archivedCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Complete an inbox message action",
              "request": {
                "name": "Complete an inbox message action",
                "description": {
                  "type": "text/markdown",
                  "content": "Marks an inbox action button completed. This changes inbox presentation state; it does not execute or authorize the business operation behind that button. Verify the actual business operation separately.\n\n## Named request examples\n\n### notifications-completeInboxAction-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/complete-inbox-action",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "complete-inbox-action"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-completeInboxAction-response",
                  "originalRequest": {
                    "name": "Complete an inbox message action",
                    "description": {
                      "type": "text/markdown",
                      "content": "Marks an inbox action button completed. This changes inbox presentation state; it does not execute or authorize the business operation behind that button. Verify the actual business operation separately.\n\n## Named request examples\n\n### notifications-completeInboxAction-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/complete-inbox-action",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "complete-inbox-action"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Action completed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Revert an inbox message action",
              "request": {
                "name": "Revert an inbox message action",
                "description": {
                  "type": "text/markdown",
                  "content": "Restores an inbox action button’s pending state. It does not undo the business operation previously associated with the button.\n\n## Named request examples\n\n### notifications-revertInboxAction-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/revert-inbox-action",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "revert-inbox-action"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-revertInboxAction-response",
                  "originalRequest": {
                    "name": "Revert an inbox message action",
                    "description": {
                      "type": "text/markdown",
                      "content": "Restores an inbox action button’s pending state. It does not undo the business operation previously associated with the button.\n\n## Named request examples\n\n### notifications-revertInboxAction-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/revert-inbox-action",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "revert-inbox-action"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"notificationId\": \"example_123\",\n  \"actionType\": \"ACTION_TYPE_PRIMARY\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Action reverted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "User: Preferences",
          "description": {
            "content": "Get and update per-channel notification preferences. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get notification preferences",
              "request": {
                "name": "Get notification preferences",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the authenticated user's notification preferences, including per-channel and per-category settings.\n\n## Named request examples\n\n### notifications-getPreferences-request\n\nRead notification preferences for the selected user.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/get-preferences",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "get-preferences"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getPreferences-response",
                  "originalRequest": {
                    "name": "Get notification preferences",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the authenticated user's notification preferences, including per-channel and per-category settings.\n\n## Named request examples\n\n### notifications-getPreferences-request\n\nRead notification preferences for the selected user.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/get-preferences",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "get-preferences"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Preferences retrieved successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"global\": {\n    \"enabled\": true,\n    \"channels\": {\n      \"inApp\": true,\n      \"push\": true,\n      \"email\": true,\n      \"sms\": true,\n      \"chat\": true\n    }\n  },\n  \"workflows\": [\n    {\n      \"workflowId\": \"example_123\",\n      \"workflowName\": \"example\",\n      \"critical\": true,\n      \"tags\": [\n        \"example\"\n      ],\n      \"channels\": {\n        \"inApp\": true,\n        \"push\": true,\n        \"email\": true,\n        \"sms\": true,\n        \"chat\": true\n      }\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Update global notification preferences",
              "request": {
                "name": "Update global notification preferences",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the subscriber's global (all-workflow) channel toggles. Omitted channels are left unchanged.\n\n## Named request examples\n\n### notifications-updateGlobalPreference-request\n\nDisable push notifications while leaving omitted channels unchanged.\n\n```json\n\n{\n  \"channels\": {\n    \"push\": false\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/update-global-preference",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "update-global-preference"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"channels\": {\n    \"push\": false\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-updateGlobalPreference-response",
                  "originalRequest": {
                    "name": "Update global notification preferences",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the subscriber's global (all-workflow) channel toggles. Omitted channels are left unchanged.\n\n## Named request examples\n\n### notifications-updateGlobalPreference-request\n\nDisable push notifications while leaving omitted channels unchanged.\n\n```json\n\n{\n  \"channels\": {\n    \"push\": false\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/update-global-preference",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "update-global-preference"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"channels\": {\n    \"push\": false\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Global preference updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Update per-workflow notification preferences",
              "request": {
                "name": "Update per-workflow notification preferences",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the subscriber's channel toggles for a single workflow. Omitted channels are left unchanged.\n\n## Named request examples\n\n### notifications-updateWorkflowPreference-request\n\nDisable push for an existing workflow while leaving other channels unchanged.\n\n```json\n\n{\n  \"workflowId\": \"promotional\",\n  \"channels\": {\n    \"push\": false\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/update-workflow-preference",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "update-workflow-preference"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"promotional\",\n  \"channels\": {\n    \"push\": false\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-updateWorkflowPreference-response",
                  "originalRequest": {
                    "name": "Update per-workflow notification preferences",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the subscriber's channel toggles for a single workflow. Omitted channels are left unchanged.\n\n## Named request examples\n\n### notifications-updateWorkflowPreference-request\n\nDisable push for an existing workflow while leaving other channels unchanged.\n\n```json\n\n{\n  \"workflowId\": \"promotional\",\n  \"channels\": {\n    \"push\": false\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/update-workflow-preference",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "update-workflow-preference"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"promotional\",\n  \"channels\": {\n    \"push\": false\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Workflow preference updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Bulk-update per-workflow preferences",
              "request": {
                "name": "Bulk-update per-workflow preferences",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates channel toggles for multiple workflows in a single request.\n\nUpdates can partially apply before a later failure. Re-read preferences and retry only unresolved changes; a request failure does not imply an atomic rollback.\n\n## Named request examples\n\n### notifications-bulkUpdatePreferences-request\n\nUpdate two existing workflows; inspect the per-entry outcomes.\n\n```json\n\n{\n  \"entries\": [\n    {\n      \"workflowId\": \"promotional\",\n      \"channels\": {\n        \"push\": false\n      }\n    },\n    {\n      \"workflowId\": \"weekly-summary\",\n      \"channels\": {\n        \"inApp\": true,\n        \"push\": true\n      }\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/bulk-update-preferences",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "bulk-update-preferences"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"entries\": [\n    {\n      \"workflowId\": \"promotional\",\n      \"channels\": {\n        \"push\": false\n      }\n    },\n    {\n      \"workflowId\": \"weekly-summary\",\n      \"channels\": {\n        \"inApp\": true,\n        \"push\": true\n      }\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-bulkUpdatePreferences-response",
                  "originalRequest": {
                    "name": "Bulk-update per-workflow preferences",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates channel toggles for multiple workflows in a single request.\n\nUpdates can partially apply before a later failure. Re-read preferences and retry only unresolved changes; a request failure does not imply an atomic rollback.\n\n## Named request examples\n\n### notifications-bulkUpdatePreferences-request\n\nUpdate two existing workflows; inspect the per-entry outcomes.\n\n```json\n\n{\n  \"entries\": [\n    {\n      \"workflowId\": \"promotional\",\n      \"channels\": {\n        \"push\": false\n      }\n    },\n    {\n      \"workflowId\": \"weekly-summary\",\n      \"channels\": {\n        \"inApp\": true,\n        \"push\": true\n      }\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/bulk-update-preferences",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "bulk-update-preferences"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"entries\": [\n    {\n      \"workflowId\": \"promotional\",\n      \"channels\": {\n        \"push\": false\n      }\n    },\n    {\n      \"workflowId\": \"weekly-summary\",\n      \"channels\": {\n        \"inApp\": true,\n        \"push\": true\n      }\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Preferences bulk-updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"updatedCount\": 1\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Notification Dispatch",
          "description": {
            "content": "Send, broadcast, bulk-send, topic-send, and cancel notifications. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Send a notification to a user",
              "request": {
                "name": "Send a notification to a user",
                "description": {
                  "type": "text/markdown",
                  "content": "Sends a notification to a single user by triggering a notification workflow.\nThe configured workflow determines its delivery channels.\n\nA transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n### Workflow definitions and payload variables\n\n[`workflowId`](/api/notifications/send-notification#request-field-workflowid) selects a prepared notification workflow containing its channels and message templates. Discover workflows through [list workflows](/api/notifications/list-workflows). The send operation renders that workflow with the supplied [`payload`](/api/notifications/send-notification#request-field-payload) variables; it does not accept arbitrary message text outside the template contract.\n\nSave the returned [`transactionId`](/api/notifications/send-notification#response-field-transactionid) and any one you supplied. Use it for [cancelling](/core-platform/notifications/sending#cancel-a-pending-notification) and [checking delivery](/core-platform/notifications/administration#delivery-status).\n\nInspect the trigger acknowledgment and errors before treating the send as accepted.\nAcceptance does not confirm delivery or a read receipt: workflow configuration,\nrecipient preferences and provider delivery can produce later failures or suppression.\nCheck delivery status for the subsequent channel attempts.\n\n## Named request examples\n\n### notifications-sendNotification-request\n\nTrigger the prepared welcome workflow for an enrolled user; replace the workflow and user identifiers.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\",\n  \"userId\": \"user-1\",\n  \"payload\": {}\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/send",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "send"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"welcome-notification\",\n  \"userId\": \"user-1\",\n  \"payload\": {}\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-sendNotification-response",
                  "originalRequest": {
                    "name": "Send a notification to a user",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a notification to a single user by triggering a notification workflow.\nThe configured workflow determines its delivery channels.\n\nA transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n### Workflow definitions and payload variables\n\n[`workflowId`](/api/notifications/send-notification#request-field-workflowid) selects a prepared notification workflow containing its channels and message templates. Discover workflows through [list workflows](/api/notifications/list-workflows). The send operation renders that workflow with the supplied [`payload`](/api/notifications/send-notification#request-field-payload) variables; it does not accept arbitrary message text outside the template contract.\n\nSave the returned [`transactionId`](/api/notifications/send-notification#response-field-transactionid) and any one you supplied. Use it for [cancelling](/core-platform/notifications/sending#cancel-a-pending-notification) and [checking delivery](/core-platform/notifications/administration#delivery-status).\n\nInspect the trigger acknowledgment and errors before treating the send as accepted.\nAcceptance does not confirm delivery or a read receipt: workflow configuration,\nrecipient preferences and provider delivery can produce later failures or suppression.\nCheck delivery status for the subsequent channel attempts.\n\n## Named request examples\n\n### notifications-sendNotification-request\n\nTrigger the prepared welcome workflow for an enrolled user; replace the workflow and user identifiers.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\",\n  \"userId\": \"user-1\",\n  \"payload\": {}\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/send",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "send"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"welcome-notification\",\n  \"userId\": \"user-1\",\n  \"payload\": {}\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Notification trigger accepted; delivery is separate",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"acknowledged\": true,\n  \"status\": \"example\",\n  \"transactionId\": \"example_123\",\n  \"errors\": [\n    \"example\"\n  ]\n}"
                }
              ]
            },
            {
              "name": "Send a notification to multiple users",
              "request": {
                "name": "Send a notification to multiple users",
                "description": {
                  "type": "text/markdown",
                  "content": "Submits per-recipient notification events together. A batch can mix workflows.\n\nResults are per-event: one recipient failing does not fail the others. Inspect each\nentry's [`acknowledged`](/api/models/bulk-trigger-result#response-field-acknowledged)\nand errors rather than the HTTP status alone. Accepted triggers are not delivery\nreceipts, and retrying an entire partially accepted batch can duplicate work.\n\n## Named request examples\n\n### notifications-sendBulkNotification-request\n\nTrigger a prepared workflow for two enrolled users; inspect every returned result.\n\n```json\n\n{\n  \"events\": [\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-1\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    },\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-2\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/send-bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "send-bulk"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"events\": [\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-1\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    },\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-2\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-sendBulkNotification-response",
                  "originalRequest": {
                    "name": "Send a notification to multiple users",
                    "description": {
                      "type": "text/markdown",
                      "content": "Submits per-recipient notification events together. A batch can mix workflows.\n\nResults are per-event: one recipient failing does not fail the others. Inspect each\nentry's [`acknowledged`](/api/models/bulk-trigger-result#response-field-acknowledged)\nand errors rather than the HTTP status alone. Accepted triggers are not delivery\nreceipts, and retrying an entire partially accepted batch can duplicate work.\n\n## Named request examples\n\n### notifications-sendBulkNotification-request\n\nTrigger a prepared workflow for two enrolled users; inspect every returned result.\n\n```json\n\n{\n  \"events\": [\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-1\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    },\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-2\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/send-bulk",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "send-bulk"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"events\": [\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-1\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    },\n    {\n      \"workflowId\": \"push-notification\",\n      \"userId\": \"user-2\",\n      \"payload\": {\n        \"title\": \"Update\",\n        \"body\": \"New feature available\"\n      }\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Bulk notification results",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"results\": [\n    {\n      \"acknowledged\": true,\n      \"status\": \"example\",\n      \"transactionId\": \"example_123\",\n      \"errors\": [\n        \"example\"\n      ]\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Cancel a pending notification",
              "request": {
                "name": "Cancel a pending notification",
                "description": {
                  "type": "text/markdown",
                  "content": "Requests cancellation of pending/scheduled provider work by transaction ID. It does not recall notifications already handed to a channel or undo an action the recipient performed. Inspect the cancellation result and preserve uncertainty when delivery is in flight.\n\n### Cancellation outcomes\n\nAn already processed notification can return HTTP 200 with `cancelled: false` and a message that it may already have been delivered. Inspect [`cancelled`](/api/notifications/cancel-notification#response-field-cancelled) rather than relying on HTTP status alone.\n\n## Named request examples\n\n### notifications-cancelNotification-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"transactionId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "cancel"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"transactionId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-cancelNotification-response",
                  "originalRequest": {
                    "name": "Cancel a pending notification",
                    "description": {
                      "type": "text/markdown",
                      "content": "Requests cancellation of pending/scheduled provider work by transaction ID. It does not recall notifications already handed to a channel or undo an action the recipient performed. Inspect the cancellation result and preserve uncertainty when delivery is in flight.\n\n### Cancellation outcomes\n\nAn already processed notification can return HTTP 200 with `cancelled: false` and a message that it may already have been delivered. Inspect [`cancelled`](/api/notifications/cancel-notification#response-field-cancelled) rather than relying on HTTP status alone.\n\n## Named request examples\n\n### notifications-cancelNotification-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"transactionId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/cancel",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "cancel"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"transactionId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Cancellation result",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"cancelled\": true,\n  \"message\": \"example\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Topics",
          "description": {
            "content": "Pub/sub fan-out — create topics, manage subscribers, send to topic. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a notification topic",
              "request": {
                "name": "Create a notification topic",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a new topic that users can be subscribed to. Topics enable broadcasting notifications to groups of subscribers.\n\n## Named request examples\n\n### notifications-createTopic-request\n\nCreate a topic before adding its subscribers.\n\n```json\n\n{\n  \"topicKey\": \"product-updates\",\n  \"name\": \"Product updates\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/create-topic",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "create-topic"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topicKey\": \"product-updates\",\n  \"name\": \"Product updates\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-createTopic-response",
                  "originalRequest": {
                    "name": "Create a notification topic",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new topic that users can be subscribed to. Topics enable broadcasting notifications to groups of subscribers.\n\n## Named request examples\n\n### notifications-createTopic-request\n\nCreate a topic before adding its subscribers.\n\n```json\n\n{\n  \"topicKey\": \"product-updates\",\n  \"name\": \"Product updates\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/create-topic",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "create-topic"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"topicKey\": \"product-updates\",\n  \"name\": \"Product updates\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Topic created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"topicKey\": \"example_123\",\n  \"topicId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Delete a notification topic",
              "request": {
                "name": "Delete a notification topic",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes an existing topic. All subscriber associations with this topic are removed.\n\n## Named request examples\n\n### notifications-deleteTopic-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"topicKey\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/delete-topic",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "delete-topic"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topicKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-deleteTopic-response",
                  "originalRequest": {
                    "name": "Delete a notification topic",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes an existing topic. All subscriber associations with this topic are removed.\n\n## Named request examples\n\n### notifications-deleteTopic-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"topicKey\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/delete-topic",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "delete-topic"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"topicKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Topic deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Add subscribers to a topic",
              "request": {
                "name": "Add subscribers to a topic",
                "description": {
                  "type": "text/markdown",
                  "content": "Adds the selected users as subscribers to the specified topic.\n\n## Named request examples\n\n### notifications-addSubscribersToTopic-request\n\nAdd existing application users to an existing topic.\n\n```json\n\n{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\",\n    \"user-2\"\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/add-subscribers-to-topic",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "add-subscribers-to-topic"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\",\n    \"user-2\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-addSubscribersToTopic-response",
                  "originalRequest": {
                    "name": "Add subscribers to a topic",
                    "description": {
                      "type": "text/markdown",
                      "content": "Adds the selected users as subscribers to the specified topic.\n\n## Named request examples\n\n### notifications-addSubscribersToTopic-request\n\nAdd existing application users to an existing topic.\n\n```json\n\n{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\",\n    \"user-2\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/add-subscribers-to-topic",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "add-subscribers-to-topic"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\",\n    \"user-2\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscribers added",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"result\": {\n    \"totalCount\": 1,\n    \"successful\": 1,\n    \"failed\": 1,\n    \"errors\": [\n      {\n        \"subscriberId\": \"example_123\",\n        \"code\": \"example\",\n        \"message\": \"example\"\n      }\n    ]\n  }\n}"
                }
              ]
            },
            {
              "name": "Remove subscribers from a topic",
              "request": {
                "name": "Remove subscribers from a topic",
                "description": {
                  "type": "text/markdown",
                  "content": "Removes the specified users from the topic's subscriber list.\n\n## Named request examples\n\n### notifications-removeSubscribersFromTopic-request\n\nRemove the selected application user from an existing topic.\n\n```json\n\n{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\"\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/remove-subscribers-from-topic",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "remove-subscribers-from-topic"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-removeSubscribersFromTopic-response",
                  "originalRequest": {
                    "name": "Remove subscribers from a topic",
                    "description": {
                      "type": "text/markdown",
                      "content": "Removes the specified users from the topic's subscriber list.\n\n## Named request examples\n\n### notifications-removeSubscribersFromTopic-request\n\nRemove the selected application user from an existing topic.\n\n```json\n\n{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/remove-subscribers-from-topic",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "remove-subscribers-from-topic"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"topicKey\": \"product-updates\",\n  \"userIds\": [\n    \"user-1\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscribers removed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"result\": {\n    \"totalCount\": 1,\n    \"successful\": 1,\n    \"failed\": 1,\n    \"errors\": [\n      {\n        \"subscriberId\": \"example_123\",\n        \"code\": \"example\",\n        \"message\": \"example\"\n      }\n    ]\n  }\n}"
                }
              ]
            },
            {
              "name": "List subscribers of a topic",
              "request": {
                "name": "List subscribers of a topic",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of user IDs subscribed to the specified topic.\n\n## Named request examples\n\n### notifications-listTopicSubscribers-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"topicKey\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/list-topic-subscribers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "list-topic-subscribers"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topicKey\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-listTopicSubscribers-response",
                  "originalRequest": {
                    "name": "List subscribers of a topic",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of user IDs subscribed to the specified topic.\n\n## Named request examples\n\n### notifications-listTopicSubscribers-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"topicKey\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/list-topic-subscribers",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "list-topic-subscribers"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"topicKey\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Topic subscribers listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"userIds\": [\n    \"example_123\"\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": true\n}"
                }
              ]
            },
            {
              "name": "Check if a user is subscribed to a topic",
              "request": {
                "name": "Check if a user is subscribed to a topic",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns whether the specified user is currently subscribed to the given topic.\n\n## Named request examples\n\n### notifications-checkTopicSubscription-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"topicKey\": \"example_123\",\n  \"userId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/check-topic-subscription",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "check-topic-subscription"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topicKey\": \"example_123\",\n  \"userId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-checkTopicSubscription-response",
                  "originalRequest": {
                    "name": "Check if a user is subscribed to a topic",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns whether the specified user is currently subscribed to the given topic.\n\n## Named request examples\n\n### notifications-checkTopicSubscription-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"topicKey\": \"example_123\",\n  \"userId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/check-topic-subscription",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "check-topic-subscription"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"topicKey\": \"example_123\",\n  \"userId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscription status returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"isSubscribed\": true\n}"
                }
              ]
            },
            {
              "name": "Send a notification to all topic subscribers",
              "request": {
                "name": "Send a notification to all topic subscribers",
                "description": {
                  "type": "text/markdown",
                  "content": "Broadcasts a notification to all subscribers of the specified topic. Optionally excludes a single user (e.g., the action originator).\n\nAcceptance is not a delivery or read receipt. Workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. A transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n## Named request examples\n\n### notifications-sendToTopic-request\n\nTrigger a prepared workflow for subscribers to an existing topic.\n\n```json\n\n{\n  \"workflowId\": \"push-notification\",\n  \"topicKey\": \"product-updates\",\n  \"payload\": {\n    \"title\": \"Update\",\n    \"body\": \"New feature available\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/send-to-topic",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "send-to-topic"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"push-notification\",\n  \"topicKey\": \"product-updates\",\n  \"payload\": {\n    \"title\": \"Update\",\n    \"body\": \"New feature available\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-sendToTopic-response",
                  "originalRequest": {
                    "name": "Send a notification to all topic subscribers",
                    "description": {
                      "type": "text/markdown",
                      "content": "Broadcasts a notification to all subscribers of the specified topic. Optionally excludes a single user (e.g., the action originator).\n\nAcceptance is not a delivery or read receipt. Workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. A transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n## Named request examples\n\n### notifications-sendToTopic-request\n\nTrigger a prepared workflow for subscribers to an existing topic.\n\n```json\n\n{\n  \"workflowId\": \"push-notification\",\n  \"topicKey\": \"product-updates\",\n  \"payload\": {\n    \"title\": \"Update\",\n    \"body\": \"New feature available\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/send-to-topic",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "send-to-topic"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"push-notification\",\n  \"topicKey\": \"product-updates\",\n  \"payload\": {\n    \"title\": \"Update\",\n    \"body\": \"New feature available\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Topic notification trigger accepted; delivery is separate",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"acknowledged\": true,\n  \"status\": \"example\",\n  \"transactionId\": \"example_123\",\n  \"errors\": [\n    \"example\"\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Digest",
          "description": {
            "content": "Batched digest delivery and cancellation. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Send a notification with digest aggregation",
              "request": {
                "name": "Send a notification with digest aggregation",
                "description": {
                  "type": "text/markdown",
                  "content": "Sends a notification that will be aggregated into a digest before delivery. Multiple events within the digest window are batched into a single notification.\n\nAcceptance is not a delivery or read receipt. Workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. A transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n## Named request examples\n\n### notifications-sendWithDigest-request\n\nSubmit one event to a workflow that already has a digest step configured.\n\n```json\n\n{\n  \"workflowId\": \"activity-digest\",\n  \"userId\": \"user-1\",\n  \"payload\": {\n    \"title\": \"Account activity\",\n    \"body\": \"A new report is available.\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/send-with-digest",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "send-with-digest"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"activity-digest\",\n  \"userId\": \"user-1\",\n  \"payload\": {\n    \"title\": \"Account activity\",\n    \"body\": \"A new report is available.\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-sendWithDigest-response",
                  "originalRequest": {
                    "name": "Send a notification with digest aggregation",
                    "description": {
                      "type": "text/markdown",
                      "content": "Sends a notification that will be aggregated into a digest before delivery. Multiple events within the digest window are batched into a single notification.\n\nAcceptance is not a delivery or read receipt. Workflow configuration, recipient preferences and provider delivery can produce later failures or suppression. A transactionId is a provider correlation/deduplication input, not an unlimited exactly-once guarantee or an authorization grant; reconcile uncertain sends before retrying.\n\n## Named request examples\n\n### notifications-sendWithDigest-request\n\nSubmit one event to a workflow that already has a digest step configured.\n\n```json\n\n{\n  \"workflowId\": \"activity-digest\",\n  \"userId\": \"user-1\",\n  \"payload\": {\n    \"title\": \"Account activity\",\n    \"body\": \"A new report is available.\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/send-with-digest",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "send-with-digest"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"activity-digest\",\n  \"userId\": \"user-1\",\n  \"payload\": {\n    \"title\": \"Account activity\",\n    \"body\": \"A new report is available.\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Digest notification accepted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"acknowledged\": true,\n  \"status\": \"example\",\n  \"transactionId\": \"example_123\",\n  \"errors\": [\n    \"example\"\n  ]\n}"
                }
              ]
            },
            {
              "name": "Cancel a pending digest event",
              "request": {
                "name": "Cancel a pending digest event",
                "description": {
                  "type": "text/markdown",
                  "content": "Cancels a specific event from a pending digest. If the digest has already been sent, this has no effect.\n\n### Cancellation outcomes\n\nAn already processed digest event can return HTTP 200 with `cancelled: false` and a message that it may already have been processed. Inspect [`cancelled`](/api/notifications/cancel-digest-event#response-field-cancelled) rather than relying on HTTP status alone.\n\n## Named request examples\n\n### notifications-cancelDigestEvent-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"transactionId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/cancel-digest-event",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "cancel-digest-event"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"transactionId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-cancelDigestEvent-response",
                  "originalRequest": {
                    "name": "Cancel a pending digest event",
                    "description": {
                      "type": "text/markdown",
                      "content": "Cancels a specific event from a pending digest. If the digest has already been sent, this has no effect.\n\n### Cancellation outcomes\n\nAn already processed digest event can return HTTP 200 with `cancelled: false` and a message that it may already have been processed. Inspect [`cancelled`](/api/notifications/cancel-digest-event#response-field-cancelled) rather than relying on HTTP status alone.\n\n## Named request examples\n\n### notifications-cancelDigestEvent-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"transactionId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/cancel-digest-event",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "cancel-digest-event"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"transactionId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Digest event cancellation result",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"cancelled\": true,\n  \"message\": \"example\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Subscribers",
          "description": {
            "content": "Create, read, update, delete, and list notification subscribers. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a notification subscriber",
              "request": {
                "name": "Create a notification subscriber",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a new subscriber profile in the notification system. The subscriber ID is used to target notifications and manage preferences.\n\n## Named request examples\n\n### notifications-createSubscriber-request\n\nEnroll an application user for notification delivery; use their stable application user ID.\n\n```json\n\n{\n  \"subscriberId\": \"user-1\",\n  \"email\": \"alex@example.com\",\n  \"firstName\": \"Alex\",\n  \"locale\": \"en-US\"\n}\n\n```\n\n### cookbook-core-platform-notifications-administration-json-02-request\n\nGuide request for 2. Enroll the same application user. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"subscriberId\": \"user-1\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/create-subscriber",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "create-subscriber"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"subscriberId\": \"user-1\",\n  \"email\": \"alex@example.com\",\n  \"firstName\": \"Alex\",\n  \"locale\": \"en-US\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-createSubscriber-response",
                  "originalRequest": {
                    "name": "Create a notification subscriber",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new subscriber profile in the notification system. The subscriber ID is used to target notifications and manage preferences.\n\n## Named request examples\n\n### notifications-createSubscriber-request\n\nEnroll an application user for notification delivery; use their stable application user ID.\n\n```json\n\n{\n  \"subscriberId\": \"user-1\",\n  \"email\": \"alex@example.com\",\n  \"firstName\": \"Alex\",\n  \"locale\": \"en-US\"\n}\n\n```\n\n### cookbook-core-platform-notifications-administration-json-02-request\n\nGuide request for 2. Enroll the same application user. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"subscriberId\": \"user-1\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/create-subscriber",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "create-subscriber"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"subscriberId\": \"user-1\",\n  \"email\": \"alex@example.com\",\n  \"firstName\": \"Alex\",\n  \"locale\": \"en-US\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscriber created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"novuSubscriberId\": \"example_123\",\n  \"subscriberId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Get the caller's subscriber profile",
              "request": {
                "name": "Get the caller's subscriber profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the subscriber profile for the authenticated caller, including channel registrations and notification preferences.\n\n## Named request examples\n\n### notifications-getSubscriber-request\n\nRead the subscriber selected by authentication; no subscriber ID is accepted in this body.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/get-subscriber",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "get-subscriber"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getSubscriber-response",
                  "originalRequest": {
                    "name": "Get the caller's subscriber profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the subscriber profile for the authenticated caller, including channel registrations and notification preferences.\n\n## Named request examples\n\n### notifications-getSubscriber-request\n\nRead the subscriber selected by authentication; no subscriber ID is accepted in this body.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/get-subscriber",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "get-subscriber"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscriber profile returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"subscriberId\": \"example_123\",\n  \"data\": {\n    \"firstName\": \"example\",\n    \"lastName\": \"example\",\n    \"email\": \"user@example.com\",\n    \"phone\": \"example\",\n    \"avatarUrl\": \"https://example.com/resource\",\n    \"locale\": \"en-US\",\n    \"timezone\": \"example\",\n    \"customData\": {}\n  },\n  \"channels\": [\n    {\n      \"channel\": \"CHANNEL_PUSH\",\n      \"registered\": true,\n      \"credentialCount\": 1\n    }\n  ],\n  \"createdAt\": \"2026-09-16T12:00:00Z\",\n  \"updatedAt\": \"2026-09-16T12:00:00Z\",\n  \"globalPreferences\": {\n    \"enabled\": true,\n    \"channels\": {\n      \"inApp\": true,\n      \"push\": true,\n      \"email\": true,\n      \"sms\": true,\n      \"chat\": true\n    }\n  },\n  \"workflowPreferences\": [\n    {\n      \"workflowId\": \"example_123\",\n      \"workflowName\": \"example\",\n      \"critical\": true,\n      \"tags\": [\n        \"example\"\n      ],\n      \"channels\": {\n        \"inApp\": true,\n        \"push\": true,\n        \"email\": true,\n        \"sms\": true,\n        \"chat\": true\n      }\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Update subscriber profile data",
              "request": {
                "name": "Update subscriber profile data",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the subscriber's profile data including name, email, phone, locale, and custom metadata.\n\n## Named request examples\n\n### notifications-updateSubscriberData-request\n\nUpdate attributes for the user selected by authentication.\n\n```json\n\n{\n  \"data\": {\n    \"firstName\": \"Alex\",\n    \"locale\": \"en-US\",\n    \"timezone\": \"America/New_York\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/update-subscriber-data",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "update-subscriber-data"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"data\": {\n    \"firstName\": \"Alex\",\n    \"locale\": \"en-US\",\n    \"timezone\": \"America/New_York\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-updateSubscriberData-response",
                  "originalRequest": {
                    "name": "Update subscriber profile data",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the subscriber's profile data including name, email, phone, locale, and custom metadata.\n\n## Named request examples\n\n### notifications-updateSubscriberData-request\n\nUpdate attributes for the user selected by authentication.\n\n```json\n\n{\n  \"data\": {\n    \"firstName\": \"Alex\",\n    \"locale\": \"en-US\",\n    \"timezone\": \"America/New_York\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/update-subscriber-data",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "update-subscriber-data"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"data\": {\n    \"firstName\": \"Alex\",\n    \"locale\": \"en-US\",\n    \"timezone\": \"America/New_York\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscriber data updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"firstName\": \"example\",\n    \"lastName\": \"example\",\n    \"email\": \"user@example.com\",\n    \"phone\": \"example\",\n    \"avatarUrl\": \"https://example.com/resource\",\n    \"locale\": \"en-US\",\n    \"timezone\": \"example\",\n    \"customData\": {}\n  },\n  \"updatedAt\": \"2026-09-16T12:00:00Z\"\n}"
                }
              ]
            },
            {
              "name": "Delete the caller's subscriber profile",
              "request": {
                "name": "Delete the caller's subscriber profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Requests deletion of the authenticated beneficiary's subscriber at the configured\nprovider. An absent subscriber is an idempotent success.\n\nInspect nested `status.acknowledged`. A missing\n[`status`](/api/notifications/delete-subscriber#response-field-status) is unknown:\nthe current handler can return an empty HTTP 200 response on configuration, network\nor provider errors. Reconcile that outcome instead of declaring cleanup complete.\nProvider acknowledgment does not certify complete erasure of queued work, remote\ncopies or platform records.\n\n## Named request examples\n\n### notifications-deleteSubscriber-request\n\nDelete the subscriber selected by authentication; no subscriber ID is accepted in this body.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/delete-subscriber",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "delete-subscriber"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-deleteSubscriber-response",
                  "originalRequest": {
                    "name": "Delete the caller's subscriber profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Requests deletion of the authenticated beneficiary's subscriber at the configured\nprovider. An absent subscriber is an idempotent success.\n\nInspect nested `status.acknowledged`. A missing\n[`status`](/api/notifications/delete-subscriber#response-field-status) is unknown:\nthe current handler can return an empty HTTP 200 response on configuration, network\nor provider errors. Reconcile that outcome instead of declaring cleanup complete.\nProvider acknowledgment does not certify complete erasure of queued work, remote\ncopies or platform records.\n\n## Named request examples\n\n### notifications-deleteSubscriber-request\n\nDelete the subscriber selected by authentication; no subscriber ID is accepted in this body.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/delete-subscriber",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "delete-subscriber"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Provider acknowledgment when present; HTTP success alone does not confirm deletion.",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": {\n    \"acknowledged\": true,\n    \"status\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List all subscribers",
              "request": {
                "name": "List all subscribers",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of all subscriber profiles in the notification system.\n\n## Named request examples\n\n### notifications-listSubscribers-request\n\nList subscribers in the authenticated tenant with default paging.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/list-subscribers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "list-subscribers"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-listSubscribers-response",
                  "originalRequest": {
                    "name": "List all subscribers",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of all subscriber profiles in the notification system.\n\n## Named request examples\n\n### notifications-listSubscribers-request\n\nList subscribers in the authenticated tenant with default paging.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/list-subscribers",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "list-subscribers"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscribers listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"subscribers\": [\n    {\n      \"subscriberId\": \"example_123\",\n      \"email\": \"user@example.com\",\n      \"firstName\": \"example\",\n      \"lastName\": \"example\",\n      \"isOnline\": true,\n      \"lastOnlineAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": true\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Activity & Status",
          "description": {
            "content": "Query delivery status and notification activity logs. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get delivery status of a notification",
              "request": {
                "name": "Get delivery status of a notification",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the current delivery status and metadata for a specific notification transaction, including provider-level details and timestamps.\n\n## Named request examples\n\n### notifications-getDeliveryStatus-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"transactionId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/get-delivery-status",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "get-delivery-status"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"transactionId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getDeliveryStatus-response",
                  "originalRequest": {
                    "name": "Get delivery status of a notification",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the current delivery status and metadata for a specific notification transaction, including provider-level details and timestamps.\n\n## Named request examples\n\n### notifications-getDeliveryStatus-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"transactionId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/get-delivery-status",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "get-delivery-status"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"transactionId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Delivery status returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"activity\": {\n    \"example\": \"value\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Get notification activity log",
              "request": {
                "name": "Get notification activity log",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns provider activity pages for diagnosing delivery across recipients.\nProvider activity can lag delivery and is not a complete authorization or\nbusiness-outcome audit. Use a bounded time window to inspect failures, and\nkeep successful recipients usable while you investigate.\n\n## Named request examples\n\n### notifications-getNotificationActivity-request\n\nRead notification activity using default paging and filters.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/get-notification-activity",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "get-notification-activity"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getNotificationActivity-response",
                  "originalRequest": {
                    "name": "Get notification activity log",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns provider activity pages for diagnosing delivery across recipients.\nProvider activity can lag delivery and is not a complete authorization or\nbusiness-outcome audit. Use a bounded time window to inspect failures, and\nkeep successful recipients usable while you investigate.\n\n## Named request examples\n\n### notifications-getNotificationActivity-request\n\nRead notification activity using default paging and filters.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/get-notification-activity",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "get-notification-activity"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Activity log returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"entries\": [\n    {\n      \"example\": \"value\"\n    }\n  ],\n  \"hasMore\": true\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Providers",
          "description": {
            "content": "Configure and list delivery providers (FCM, SendGrid, etc.). See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Configure a notification provider",
              "request": {
                "name": "Configure a notification provider",
                "description": {
                  "type": "text/markdown",
                  "content": "Configures credentials and activation state for a notification provider (e.g., FCM, SendGrid, Twilio).\n\nUses **upsert** semantics: if an active integration already exists for the specified provider type, it updates the existing integration in place (preserving its ID and subscriber linkages). If no active integration exists, a new one is created.\n\nThe current read-then-upsert path does not establish atomic uniqueness under concurrent configuration. Credentials are sensitive and should stay in trusted backend tooling; the API shape is not proof that they bypass all internal journals or diagnostics.\n\n### Provider configuration outcomes\n\nMultiple active integrations of the same type return `409 Conflict` and need support resolution. After a credential change, test delivery to an already registered device. [Provider status](/api/notifications/get-providers) alone does not prove arrival.\n\n## Named request examples\n\n### notifications-configureProvider-request\n\nConfigure email delivery with your SendGrid credential; the displayed key is a placeholder.\n\n```json\n\n{\n  \"provider\": \"PROVIDER_TYPE_SENDGRID\",\n  \"credentials\": {\n    \"apiKey\": \"REPLACE_WITH_SENDGRID_API_KEY\"\n  },\n  \"active\": true\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/configure-provider",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "configure-provider"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"provider\": \"PROVIDER_TYPE_SENDGRID\",\n  \"credentials\": {\n    \"apiKey\": \"REPLACE_WITH_SENDGRID_API_KEY\"\n  },\n  \"active\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-configureProvider-response",
                  "originalRequest": {
                    "name": "Configure a notification provider",
                    "description": {
                      "type": "text/markdown",
                      "content": "Configures credentials and activation state for a notification provider (e.g., FCM, SendGrid, Twilio).\n\nUses **upsert** semantics: if an active integration already exists for the specified provider type, it updates the existing integration in place (preserving its ID and subscriber linkages). If no active integration exists, a new one is created.\n\nThe current read-then-upsert path does not establish atomic uniqueness under concurrent configuration. Credentials are sensitive and should stay in trusted backend tooling; the API shape is not proof that they bypass all internal journals or diagnostics.\n\n### Provider configuration outcomes\n\nMultiple active integrations of the same type return `409 Conflict` and need support resolution. After a credential change, test delivery to an already registered device. [Provider status](/api/notifications/get-providers) alone does not prove arrival.\n\n## Named request examples\n\n### notifications-configureProvider-request\n\nConfigure email delivery with your SendGrid credential; the displayed key is a placeholder.\n\n```json\n\n{\n  \"provider\": \"PROVIDER_TYPE_SENDGRID\",\n  \"credentials\": {\n    \"apiKey\": \"REPLACE_WITH_SENDGRID_API_KEY\"\n  },\n  \"active\": true\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/configure-provider",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "configure-provider"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"provider\": \"PROVIDER_TYPE_SENDGRID\",\n  \"credentials\": {\n    \"apiKey\": \"REPLACE_WITH_SENDGRID_API_KEY\"\n  },\n  \"active\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Provider configured (created or updated)",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"integrationId\": \"example_123\",\n  \"active\": true\n}"
                }
              ]
            },
            {
              "name": "List configured providers",
              "request": {
                "name": "List configured providers",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns all configured notification providers and their activation status.\n\n## Named request examples\n\n### notifications-getProviders-request\n\nList configured notification delivery providers.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/get-providers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "get-providers"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getProviders-response",
                  "originalRequest": {
                    "name": "List configured providers",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns all configured notification providers and their activation status.\n\n## Named request examples\n\n### notifications-getProviders-request\n\nList configured notification delivery providers.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/get-providers",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "get-providers"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Providers listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"providers\": [\n    {\n      \"provider\": \"PROVIDER_TYPE_FCM\",\n      \"integrationId\": \"example_123\",\n      \"active\": true\n    }\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Management: Workflows",
          "description": {
            "content": "Create, update, get, list, and delete notification workflows. See the [Notifications guide](/core-platform/notifications).",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a notification workflow",
              "request": {
                "name": "Create a notification workflow",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a new notification workflow definition with steps, channel configuration, and preference settings.\n\n## Named request examples\n\n### notifications-createWorkflow-request\n\nCreate the in-app welcome definition from the administration recipe; provider JSON is passed through.\n\n```json\n\n{\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/create-workflow",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "create-workflow"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-createWorkflow-response",
                  "originalRequest": {
                    "name": "Create a notification workflow",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new notification workflow definition with steps, channel configuration, and preference settings.\n\n## Named request examples\n\n### notifications-createWorkflow-request\n\nCreate the in-app welcome definition from the administration recipe; provider JSON is passed through.\n\n```json\n\n{\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/create-workflow",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "create-workflow"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Workflow created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"workflow\": {\n    \"example\": \"value\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Update an existing notification workflow",
              "request": {
                "name": "Update an existing notification workflow",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the identified workflow using the supplied definition.\n\n## Named request examples\n\n### notifications-updateWorkflow-request\n\nReplace an existing workflow with the complete definition; preserve every delivery step you intend to keep.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\",\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/update-workflow",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "update-workflow"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"welcome-notification\",\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-updateWorkflow-response",
                  "originalRequest": {
                    "name": "Update an existing notification workflow",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the identified workflow using the supplied definition.\n\n## Named request examples\n\n### notifications-updateWorkflow-request\n\nReplace an existing workflow with the complete definition; preserve every delivery step you intend to keep.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\",\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/update-workflow",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "update-workflow"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"welcome-notification\",\n  \"workflow\": {\n    \"name\": \"Welcome Notification\",\n    \"description\": \"Sent when a user completes onboarding\",\n    \"__source\": \"editor\",\n    \"steps\": [\n      {\n        \"name\": \"In-App Step\",\n        \"type\": \"in_app\",\n        \"controlValues\": {\n          \"body\": \"Welcome to your health coaching journey!\"\n        }\n      }\n    ]\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Workflow updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"workflow\": {\n    \"example\": \"value\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Get a notification workflow",
              "request": {
                "name": "Get a notification workflow",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the full workflow definition and metadata. The workflow can be identified by either workflow ID or trigger identifier.\n\n## Named request examples\n\n### notifications-getWorkflow-request\n\nRead an existing workflow using its saved workflow identifier.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/get-workflow",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "get-workflow"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"welcome-notification\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getWorkflow-response",
                  "originalRequest": {
                    "name": "Get a notification workflow",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the full workflow definition and metadata. The workflow can be identified by either workflow ID or trigger identifier.\n\n## Named request examples\n\n### notifications-getWorkflow-request\n\nRead an existing workflow using its saved workflow identifier.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/get-workflow",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "get-workflow"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"welcome-notification\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Workflow returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"workflow\": {\n    \"example\": \"value\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List notification workflows",
              "request": {
                "name": "List notification workflows",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of all notification workflows with summary information.\n\n## Named request examples\n\n### notifications-listWorkflows-request\n\nList notification workflows with default paging.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/list-workflows",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "list-workflows"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-listWorkflows-response",
                  "originalRequest": {
                    "name": "List notification workflows",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of all notification workflows with summary information.\n\n## Named request examples\n\n### notifications-listWorkflows-request\n\nList notification workflows with default paging.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/list-workflows",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "list-workflows"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Workflows listed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"workflows\": [\n    {\n      \"example\": \"value\"\n    }\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": true\n}"
                }
              ]
            },
            {
              "name": "Delete a notification workflow",
              "request": {
                "name": "Delete a notification workflow",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes a notification workflow. The workflow can be identified by either workflow ID or trigger identifier.\n\n## Named request examples\n\n### notifications-deleteWorkflow-request\n\nRetire an existing workflow after stopping new triggers.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/delete-workflow",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "delete-workflow"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflowId\": \"welcome-notification\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-deleteWorkflow-response",
                  "originalRequest": {
                    "name": "Delete a notification workflow",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes a notification workflow. The workflow can be identified by either workflow ID or trigger identifier.\n\n## Named request examples\n\n### notifications-deleteWorkflow-request\n\nRetire an existing workflow after stopping new triggers.\n\n```json\n\n{\n  \"workflowId\": \"welcome-notification\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/delete-workflow",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "delete-workflow"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"workflowId\": \"welcome-notification\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Workflow deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"workflowId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Get pending workflow changes",
              "request": {
                "name": "Get pending workflow changes",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns pending workflow edits in the notification provider’s development configuration. These provider environments do not create separate Travila projects or test/live isolation.\n\n## Named request examples\n\n### notifications-getPendingChanges-request\n\nList pending notification configuration changes in the configured environment.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/get-pending-changes",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "get-pending-changes"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-getPendingChanges-response",
                  "originalRequest": {
                    "name": "Get pending workflow changes",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns pending workflow edits in the notification provider’s development configuration. These provider environments do not create separate Travila projects or test/live isolation.\n\n## Named request examples\n\n### notifications-getPendingChanges-request\n\nList pending notification configuration changes in the configured environment.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/get-pending-changes",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "get-pending-changes"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Pending changes returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"changes\": [\n    {\n      \"changeId\": \"example_123\",\n      \"type\": \"example\",\n      \"entityName\": \"example\",\n      \"entityId\": \"example_123\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"createdBy\": \"example\"\n    }\n  ],\n  \"totalCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Promote a single workflow change",
              "request": {
                "name": "Promote a single workflow change",
                "description": {
                  "type": "text/markdown",
                  "content": "Promotes one staged workflow change to the notification provider’s live configuration by changeId.\n\n## Named request examples\n\n### notifications-promoteChange-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"changeId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/promote-change",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "promote-change"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"changeId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-promoteChange-response",
                  "originalRequest": {
                    "name": "Promote a single workflow change",
                    "description": {
                      "type": "text/markdown",
                      "content": "Promotes one staged workflow change to the notification provider’s live configuration by changeId.\n\n## Named request examples\n\n### notifications-promoteChange-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"changeId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/promote-change",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "promote-change"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"changeId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Change promoted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"success\": true,\n  \"productionEntityId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Promote all pending workflow changes",
              "request": {
                "name": "Promote all pending workflow changes",
                "description": {
                  "type": "text/markdown",
                  "content": "Promotes staged workflow changes to the notification provider’s live configuration. Supply changeIds to select changes; omitting it or sending an empty array selects all pending changes. Inspect per-change errors alongside the successful results.\n\n## Named request examples\n\n### notifications-promoteAllChanges-request\n\nPromote explicitly selected pending changes; replace changeIds with IDs from get-pending-changes.\n\n```json\n\n{\n  \"changeIds\": [\n    \"change_123\"\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/promote-all-changes",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "promote-all-changes"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": {
                  "type": "apikey",
                  "apikey": [
                    {
                      "key": "key",
                      "value": "X-API-Key"
                    },
                    {
                      "key": "value",
                      "value": "{{apiKey}}"
                    },
                    {
                      "key": "in",
                      "value": "header"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"changeIds\": [\n    \"change_123\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "notifications-promoteAllChanges-response",
                  "originalRequest": {
                    "name": "Promote all pending workflow changes",
                    "description": {
                      "type": "text/markdown",
                      "content": "Promotes staged workflow changes to the notification provider’s live configuration. Supply changeIds to select changes; omitting it or sending an empty array selects all pending changes. Inspect per-change errors alongside the successful results.\n\n## Named request examples\n\n### notifications-promoteAllChanges-request\n\nPromote explicitly selected pending changes; replace changeIds with IDs from get-pending-changes.\n\n```json\n\n{\n  \"changeIds\": [\n    \"change_123\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/notifications/manage/promote-all-changes",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "notifications",
                        "manage",
                        "promote-all-changes"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": {
                      "type": "apikey",
                      "apikey": [
                        {
                          "key": "key",
                          "value": "X-API-Key"
                        },
                        {
                          "key": "value",
                          "value": "{{apiKey}}"
                        },
                        {
                          "key": "in",
                          "value": "header"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"changeIds\": [\n    \"change_123\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Changes promoted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"promotedCount\": 1,\n  \"promotedIds\": [\n    \"example_123\"\n  ],\n  \"errors\": [\n    {\n      \"changeId\": \"example_123\",\n      \"error\": \"example\"\n    }\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Scheduler APIs",
      "description": "Create and manage schedules that invoke HTTPS targets. A firing is a logical scheduled event and can have retry attempts. Target acceptance does not prove completion of the customer’s business operation.\n\nFollow the operation's scope: backend `sk_…` calls can carry an authorized `X-On-Behalf-Of` beneficiary, while client `pk_…` calls require the configured user's JWT. Owner-cleanup operations require a beneficiary; project teardown requires a subjectless backend request. The API also permits subjectless backend context. A console JWT belongs to a separate surface. See [Authentication](/core-platform/identity-access/authentication).\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nAuthenticate deliveries using the [receiver verification guide](/core-platform/scheduling/verifying). A valid token alone does not bind an arbitrary submitted body: verify the trusted schedule, payload and delivery identity before admitting work. Pause or deletion affects pending work and cannot undo effects already dispatched. Logout does not delete a user’s schedules.\n\n**Related guide:** [Scheduling](/core-platform/scheduling)\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Job Lifecycle",
          "description": {
            "content": "Create, manage, pause, resume, and delete scheduled jobs. See the [Scheduled Jobs guide](/core-platform/scheduling) for cron, one-shot, and recurring-interval patterns with retry and auto-pause.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a scheduled job",
              "request": {
                "name": "Create a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a new scheduled job. The job becomes active immediately and fires on\nits next matching time.\n\n## Named request examples\n\n### scheduled-jobs-createJob-request\n\nSchedule a weekday digest while acting on behalf of its owner; replace the target URL with your endpoint.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-02-request\n\nGuide request for Step 4: Create the schedule. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily agent briefing\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://api.example.com/hooks/scheduled-agent\",\n    \"kind\": \"agent-briefing\",\n    \"payload\": {\n      \"task\": \"daily-briefing\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-02-request\n\nGuide request for Variant: remind the user once at a chosen time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Send welcome email\",\n  \"scheduleType\": \"SCHEDULE_TYPE_ONCE\",\n  \"scheduledAt\": \"2026-10-10T14:00:00Z\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/welcome\",\n    \"kind\": \"notification\",\n    \"payload\": {\n      \"user_id\": \"usr_abc123\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-03-request\n\nGuide request for Variant: refresh application data every few minutes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Sync cache\",\n  \"scheduleType\": \"SCHEDULE_TYPE_RECURRING_INTERVAL\",\n  \"intervalSeconds\": 300,\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/cache-sync\",\n    \"kind\": \"maintenance\"\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-execution-02-request\n\nGuide request for Recover a temporary receiver failure. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Critical alert\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"*/5 * * * *\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/alert\",\n    \"kind\": \"alert\"\n  },\n  \"retryPolicy\": {\n    \"maxAttempts\": 3,\n    \"initialBackoffMs\": 1000,\n    \"maxBackoffMs\": 10000\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-08-request\n\nGuide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"externalId\": \"user-42-daily-digest\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/create-job",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "create-job"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-createJob-response",
                  "originalRequest": {
                    "name": "Create a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new scheduled job. The job becomes active immediately and fires on\nits next matching time.\n\n## Named request examples\n\n### scheduled-jobs-createJob-request\n\nSchedule a weekday digest while acting on behalf of its owner; replace the target URL with your endpoint.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-02-request\n\nGuide request for Step 4: Create the schedule. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily agent briefing\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://api.example.com/hooks/scheduled-agent\",\n    \"kind\": \"agent-briefing\",\n    \"payload\": {\n      \"task\": \"daily-briefing\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-02-request\n\nGuide request for Variant: remind the user once at a chosen time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Send welcome email\",\n  \"scheduleType\": \"SCHEDULE_TYPE_ONCE\",\n  \"scheduledAt\": \"2026-10-10T14:00:00Z\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/welcome\",\n    \"kind\": \"notification\",\n    \"payload\": {\n      \"user_id\": \"usr_abc123\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-03-request\n\nGuide request for Variant: refresh application data every few minutes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Sync cache\",\n  \"scheduleType\": \"SCHEDULE_TYPE_RECURRING_INTERVAL\",\n  \"intervalSeconds\": 300,\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/cache-sync\",\n    \"kind\": \"maintenance\"\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-execution-02-request\n\nGuide request for Recover a temporary receiver failure. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Critical alert\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"*/5 * * * *\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/alert\",\n    \"kind\": \"alert\"\n  },\n  \"retryPolicy\": {\n    \"maxAttempts\": 3,\n    \"initialBackoffMs\": 1000,\n    \"maxBackoffMs\": 10000\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-08-request\n\nGuide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"externalId\": \"user-42-daily-digest\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/create-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "create-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"tenantId\": \"example_123\",\n  \"projectId\": \"example_123\",\n  \"ownerSubject\": \"example\",\n  \"name\": \"example\",\n  \"description\": \"example\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * *\",\n  \"timezone\": \"example\",\n  \"scheduledAt\": \"2026-09-16T12:00:00Z\",\n  \"intervalSeconds\": 1,\n  \"target\": {\n    \"url\": \"https://example.com/callback\",\n    \"method\": \"example\",\n    \"kind\": \"example\",\n    \"payload\": {\n      \"example\": \"value\"\n    }\n  },\n  \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n  \"retryPolicy\": {\n    \"maxAttempts\": 1,\n    \"initialBackoffMs\": 1,\n    \"maxBackoffMs\": 1\n  },\n  \"metadata\": {\n    \"example\": \"value\"\n  },\n  \"autoPauseThreshold\": 1,\n  \"externalId\": \"example_123\",\n  \"createdAt\": \"2026-09-16T12:00:00Z\",\n  \"createdBySubject\": \"example\",\n  \"updatedAt\": \"2026-09-16T12:00:00Z\",\n  \"updatedBySubject\": \"example\",\n  \"pausedAt\": \"2026-09-16T12:00:00Z\",\n  \"pausedBySubject\": \"example\",\n  \"pausedReason\": \"example\",\n  \"resumedAt\": \"2026-09-16T12:00:00Z\",\n  \"resumedBySubject\": \"example\",\n  \"deletedAt\": \"2026-09-16T12:00:00Z\",\n  \"deletedBySubject\": \"example\",\n  \"lastTriggeredAt\": \"2026-09-16T12:00:00Z\",\n  \"nextTriggerAt\": \"2026-09-16T12:00:00Z\",\n  \"triggerCount\": \"1\",\n  \"failureCount\": \"1\",\n  \"consecutiveFailureCount\": \"1\"\n}"
                },
                {
                  "name": "cookbook-core-platform-scheduling-build-scheduled-agents-json-03-response",
                  "originalRequest": {
                    "name": "Create a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new scheduled job. The job becomes active immediately and fires on\nits next matching time.\n\n## Named request examples\n\n### scheduled-jobs-createJob-request\n\nSchedule a weekday digest while acting on behalf of its owner; replace the target URL with your endpoint.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-02-request\n\nGuide request for Step 4: Create the schedule. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily agent briefing\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://api.example.com/hooks/scheduled-agent\",\n    \"kind\": \"agent-briefing\",\n    \"payload\": {\n      \"task\": \"daily-briefing\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-02-request\n\nGuide request for Variant: remind the user once at a chosen time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Send welcome email\",\n  \"scheduleType\": \"SCHEDULE_TYPE_ONCE\",\n  \"scheduledAt\": \"2026-10-10T14:00:00Z\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/welcome\",\n    \"kind\": \"notification\",\n    \"payload\": {\n      \"user_id\": \"usr_abc123\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-03-request\n\nGuide request for Variant: refresh application data every few minutes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Sync cache\",\n  \"scheduleType\": \"SCHEDULE_TYPE_RECURRING_INTERVAL\",\n  \"intervalSeconds\": 300,\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/cache-sync\",\n    \"kind\": \"maintenance\"\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-execution-02-request\n\nGuide request for Recover a temporary receiver failure. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Critical alert\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"*/5 * * * *\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/alert\",\n    \"kind\": \"alert\"\n  },\n  \"retryPolicy\": {\n    \"maxAttempts\": 3,\n    \"initialBackoffMs\": 1000,\n    \"maxBackoffMs\": 10000\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-08-request\n\nGuide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"externalId\": \"user-42-daily-digest\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/create-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "create-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"name\": \"Daily agent briefing\",\n  \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"nextTriggerAt\": \"2026-06-04T13:00:00Z\",\n  \"createdAt\": \"2026-06-03T14:00:00Z\"\n}"
                },
                {
                  "name": "cookbook-core-platform-scheduling-creating-json-01-response",
                  "originalRequest": {
                    "name": "Create a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new scheduled job. The job becomes active immediately and fires on\nits next matching time.\n\n## Named request examples\n\n### scheduled-jobs-createJob-request\n\nSchedule a weekday digest while acting on behalf of its owner; replace the target URL with your endpoint.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-02-request\n\nGuide request for Step 4: Create the schedule. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily agent briefing\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://api.example.com/hooks/scheduled-agent\",\n    \"kind\": \"agent-briefing\",\n    \"payload\": {\n      \"task\": \"daily-briefing\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-02-request\n\nGuide request for Variant: remind the user once at a chosen time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Send welcome email\",\n  \"scheduleType\": \"SCHEDULE_TYPE_ONCE\",\n  \"scheduledAt\": \"2026-10-10T14:00:00Z\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/welcome\",\n    \"kind\": \"notification\",\n    \"payload\": {\n      \"user_id\": \"usr_abc123\"\n    }\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-creating-03-request\n\nGuide request for Variant: refresh application data every few minutes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Sync cache\",\n  \"scheduleType\": \"SCHEDULE_TYPE_RECURRING_INTERVAL\",\n  \"intervalSeconds\": 300,\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/cache-sync\",\n    \"kind\": \"maintenance\"\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-execution-02-request\n\nGuide request for Recover a temporary receiver failure. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Critical alert\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"*/5 * * * *\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/alert\",\n    \"kind\": \"alert\"\n  },\n  \"retryPolicy\": {\n    \"maxAttempts\": 3,\n    \"initialBackoffMs\": 1000,\n    \"maxBackoffMs\": 10000\n  }\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-08-request\n\nGuide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"externalId\": \"user-42-daily-digest\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/create-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "create-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"Daily digest\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"target\": {\n    \"url\": \"https://your-api.example.com/jobs/daily-digest\",\n    \"kind\": \"digest\",\n    \"payload\": {\n      \"report\": \"daily\"\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job created",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"name\": \"Daily digest\",\n  \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * 1-5\",\n  \"timezone\": \"America/New_York\",\n  \"nextTriggerAt\": \"2026-06-04T13:00:00Z\",\n  \"createdAt\": \"2026-06-03T14:00:00Z\"\n}"
                }
              ]
            },
            {
              "name": "Get a scheduled job",
              "request": {
                "name": "Get a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the metadata and current state of a single scheduled job by ID.\n\n## Named request examples\n\n### scheduled-jobs-getJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-01-request\n\nGuide request for 1. Load the reminder being changed. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-09-request\n\nGuide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"externalId\": \"user-42-daily-digest\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/get-job",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "get-job"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-getJob-response",
                  "originalRequest": {
                    "name": "Get a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the metadata and current state of a single scheduled job by ID.\n\n## Named request examples\n\n### scheduled-jobs-getJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-01-request\n\nGuide request for 1. Load the reminder being changed. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-09-request\n\nGuide request for Variant: use your application’s reminder identifier. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"externalId\": \"user-42-daily-digest\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/get-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "get-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"tenantId\": \"example_123\",\n  \"projectId\": \"example_123\",\n  \"ownerSubject\": \"example\",\n  \"name\": \"example\",\n  \"description\": \"example\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * *\",\n  \"timezone\": \"example\",\n  \"scheduledAt\": \"2026-09-16T12:00:00Z\",\n  \"intervalSeconds\": 1,\n  \"target\": {\n    \"url\": \"https://example.com/callback\",\n    \"method\": \"example\",\n    \"kind\": \"example\",\n    \"payload\": {\n      \"example\": \"value\"\n    }\n  },\n  \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n  \"retryPolicy\": {\n    \"maxAttempts\": 1,\n    \"initialBackoffMs\": 1,\n    \"maxBackoffMs\": 1\n  },\n  \"metadata\": {\n    \"example\": \"value\"\n  },\n  \"autoPauseThreshold\": 1,\n  \"externalId\": \"example_123\",\n  \"createdAt\": \"2026-09-16T12:00:00Z\",\n  \"createdBySubject\": \"example\",\n  \"updatedAt\": \"2026-09-16T12:00:00Z\",\n  \"updatedBySubject\": \"example\",\n  \"pausedAt\": \"2026-09-16T12:00:00Z\",\n  \"pausedBySubject\": \"example\",\n  \"pausedReason\": \"example\",\n  \"resumedAt\": \"2026-09-16T12:00:00Z\",\n  \"resumedBySubject\": \"example\",\n  \"deletedAt\": \"2026-09-16T12:00:00Z\",\n  \"deletedBySubject\": \"example\",\n  \"lastTriggeredAt\": \"2026-09-16T12:00:00Z\",\n  \"nextTriggerAt\": \"2026-09-16T12:00:00Z\",\n  \"triggerCount\": \"1\",\n  \"failureCount\": \"1\",\n  \"consecutiveFailureCount\": \"1\"\n}"
                }
              ]
            },
            {
              "name": "List scheduled jobs",
              "request": {
                "name": "List scheduled jobs",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of scheduled jobs for the authenticated\ntenant and project. Optionally filter by lifecycle state or target kind.\n\n## Named request examples\n\n### scheduled-jobs-listJobs-request\n\nList jobs visible in the authenticated scope with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-core-platform-scheduling-managing-02-request\n\nGuide request for Variant: show the user’s reminder list. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"pageSize\": 20,\n  \"stateFilter\": \"SCHEDULE_STATUS_ACTIVE\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/list-jobs",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "list-jobs"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-listJobs-response",
                  "originalRequest": {
                    "name": "List scheduled jobs",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of scheduled jobs for the authenticated\ntenant and project. Optionally filter by lifecycle state or target kind.\n\n## Named request examples\n\n### scheduled-jobs-listJobs-request\n\nList jobs visible in the authenticated scope with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-core-platform-scheduling-managing-02-request\n\nGuide request for Variant: show the user’s reminder list. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"pageSize\": 20,\n  \"stateFilter\": \"SCHEDULE_STATUS_ACTIVE\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/list-jobs",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "list-jobs"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled jobs returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"schedules\": [\n    {\n      \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n      \"tenantId\": \"example_123\",\n      \"projectId\": \"example_123\",\n      \"ownerSubject\": \"example\",\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n      \"cronExpression\": \"0 9 * * *\",\n      \"timezone\": \"example\",\n      \"scheduledAt\": \"2026-09-16T12:00:00Z\",\n      \"intervalSeconds\": 1,\n      \"target\": {\n        \"url\": \"https://example.com/callback\",\n        \"method\": \"example\",\n        \"kind\": \"example\"\n      },\n      \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n      \"retryPolicy\": {\n        \"maxAttempts\": 1,\n        \"initialBackoffMs\": 1,\n        \"maxBackoffMs\": 1\n      },\n      \"metadata\": {\n        \"example\": \"value\"\n      },\n      \"autoPauseThreshold\": 1,\n      \"externalId\": \"example_123\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"createdBySubject\": \"example\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedBySubject\": \"example\",\n      \"pausedAt\": \"2026-09-16T12:00:00Z\",\n      \"pausedBySubject\": \"example\",\n      \"pausedReason\": \"example\",\n      \"resumedAt\": \"2026-09-16T12:00:00Z\",\n      \"resumedBySubject\": \"example\",\n      \"deletedAt\": \"2026-09-16T12:00:00Z\",\n      \"deletedBySubject\": \"example\",\n      \"lastTriggeredAt\": \"2026-09-16T12:00:00Z\",\n      \"nextTriggerAt\": \"2026-09-16T12:00:00Z\",\n      \"triggerCount\": \"1\",\n      \"failureCount\": \"1\",\n      \"consecutiveFailureCount\": \"1\"\n    }\n  ],\n  \"nextPageToken\": \"example\",\n  \"totalCount\": 1\n}"
                }
              ]
            },
            {
              "name": "Update a scheduled job",
              "request": {
                "name": "Update a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates the provided schedule settings. Only included fields change; omitted fields\nremain unchanged.\n\n### Timing changes\n\nThe scheduler applies timing edits before returning by cancelling and reinserting\nthe scheduled entry. This cannot undo an HTTP callback already dispatched or a\nbusiness action your receiver has accepted.\n\n[`nextTriggerAt`](/api/models/schedule#response-field-nexttriggerat) on the returned\njob is the scheduling snapshot after the update; it can change as work advances.\nDo not infer wall-clock firing precision or business completion from that timestamp.\n\n## Named request examples\n\n### scheduled-jobs-updateJob-request\n\nRename an existing job using its returned scheduleId.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"name\": \"Weekday morning digest\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-03-request\n\nGuide request for 2. Save a new delivery time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"cronExpression\": \"0 10 * * 1-5\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/update-job",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "update-job"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"name\": \"Weekday morning digest\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-updateJob-response",
                  "originalRequest": {
                    "name": "Update a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates the provided schedule settings. Only included fields change; omitted fields\nremain unchanged.\n\n### Timing changes\n\nThe scheduler applies timing edits before returning by cancelling and reinserting\nthe scheduled entry. This cannot undo an HTTP callback already dispatched or a\nbusiness action your receiver has accepted.\n\n[`nextTriggerAt`](/api/models/schedule#response-field-nexttriggerat) on the returned\njob is the scheduling snapshot after the update; it can change as work advances.\nDo not infer wall-clock firing precision or business completion from that timestamp.\n\n## Named request examples\n\n### scheduled-jobs-updateJob-request\n\nRename an existing job using its returned scheduleId.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"name\": \"Weekday morning digest\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-03-request\n\nGuide request for 2. Save a new delivery time. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"cronExpression\": \"0 10 * * 1-5\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/update-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "update-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"name\": \"Weekday morning digest\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job updated",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"schedule\": {\n    \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n    \"tenantId\": \"example_123\",\n    \"projectId\": \"example_123\",\n    \"ownerSubject\": \"example\",\n    \"name\": \"example\",\n    \"description\": \"example\",\n    \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n    \"cronExpression\": \"0 9 * * *\",\n    \"timezone\": \"example\",\n    \"scheduledAt\": \"2026-09-16T12:00:00Z\",\n    \"intervalSeconds\": 1,\n    \"target\": {\n      \"url\": \"https://example.com/callback\",\n      \"method\": \"example\",\n      \"kind\": \"example\"\n    },\n    \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n    \"retryPolicy\": {\n      \"maxAttempts\": 1,\n      \"initialBackoffMs\": 1,\n      \"maxBackoffMs\": 1\n    },\n    \"metadata\": {\n      \"example\": \"value\"\n    },\n    \"autoPauseThreshold\": 1,\n    \"externalId\": \"example_123\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"createdBySubject\": \"example\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedBySubject\": \"example\",\n    \"pausedAt\": \"2026-09-16T12:00:00Z\",\n    \"pausedBySubject\": \"example\",\n    \"pausedReason\": \"example\",\n    \"resumedAt\": \"2026-09-16T12:00:00Z\",\n    \"resumedBySubject\": \"example\",\n    \"deletedAt\": \"2026-09-16T12:00:00Z\",\n    \"deletedBySubject\": \"example\",\n    \"lastTriggeredAt\": \"2026-09-16T12:00:00Z\",\n    \"nextTriggerAt\": \"2026-09-16T12:00:00Z\",\n    \"triggerCount\": \"1\",\n    \"failureCount\": \"1\",\n    \"consecutiveFailureCount\": \"1\"\n  },\n  \"effectiveAt\": \"example\"\n}"
                }
              ]
            },
            {
              "name": "Pause a scheduled job",
              "request": {
                "name": "Pause a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Pauses future scheduling for the job. A dispatch already admitted or in flight can still complete; pausing is not remote-effect cancellation.\n\n## Named request examples\n\n### scheduled-jobs-pauseJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-04-1-request\n\nGuide request for 3. Let the user take a temporary break. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"reason\": \"Target service under maintenance\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/pause-job",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "pause-job"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-pauseJob-response",
                  "originalRequest": {
                    "name": "Pause a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Pauses future scheduling for the job. A dispatch already admitted or in flight can still complete; pausing is not remote-effect cancellation.\n\n## Named request examples\n\n### scheduled-jobs-pauseJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-04-1-request\n\nGuide request for 3. Let the user take a temporary break. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"reason\": \"Target service under maintenance\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/pause-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "pause-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job paused",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"tenantId\": \"example_123\",\n  \"projectId\": \"example_123\",\n  \"ownerSubject\": \"example\",\n  \"name\": \"example\",\n  \"description\": \"example\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * *\",\n  \"timezone\": \"example\",\n  \"scheduledAt\": \"2026-09-16T12:00:00Z\",\n  \"intervalSeconds\": 1,\n  \"target\": {\n    \"url\": \"https://example.com/callback\",\n    \"method\": \"example\",\n    \"kind\": \"example\",\n    \"payload\": {\n      \"example\": \"value\"\n    }\n  },\n  \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n  \"retryPolicy\": {\n    \"maxAttempts\": 1,\n    \"initialBackoffMs\": 1,\n    \"maxBackoffMs\": 1\n  },\n  \"metadata\": {\n    \"example\": \"value\"\n  },\n  \"autoPauseThreshold\": 1,\n  \"externalId\": \"example_123\",\n  \"createdAt\": \"2026-09-16T12:00:00Z\",\n  \"createdBySubject\": \"example\",\n  \"updatedAt\": \"2026-09-16T12:00:00Z\",\n  \"updatedBySubject\": \"example\",\n  \"pausedAt\": \"2026-09-16T12:00:00Z\",\n  \"pausedBySubject\": \"example\",\n  \"pausedReason\": \"example\",\n  \"resumedAt\": \"2026-09-16T12:00:00Z\",\n  \"resumedBySubject\": \"example\",\n  \"deletedAt\": \"2026-09-16T12:00:00Z\",\n  \"deletedBySubject\": \"example\",\n  \"lastTriggeredAt\": \"2026-09-16T12:00:00Z\",\n  \"nextTriggerAt\": \"2026-09-16T12:00:00Z\",\n  \"triggerCount\": \"1\",\n  \"failureCount\": \"1\",\n  \"consecutiveFailureCount\": \"1\"\n}"
                }
              ]
            },
            {
              "name": "Resume a scheduled job",
              "request": {
                "name": "Resume a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Resumes a previously paused scheduled job, returning it to the active state.\n\n## Named request examples\n\n### scheduled-jobs-resumeJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-04-2-request\n\nGuide request for 3. Let the user take a temporary break. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/resume-job",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "resume-job"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-resumeJob-response",
                  "originalRequest": {
                    "name": "Resume a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Resumes a previously paused scheduled job, returning it to the active state.\n\n## Named request examples\n\n### scheduled-jobs-resumeJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-04-2-request\n\nGuide request for 3. Let the user take a temporary break. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/resume-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "resume-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job resumed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"tenantId\": \"example_123\",\n  \"projectId\": \"example_123\",\n  \"ownerSubject\": \"example\",\n  \"name\": \"example\",\n  \"description\": \"example\",\n  \"scheduleType\": \"SCHEDULE_TYPE_CRON\",\n  \"cronExpression\": \"0 9 * * *\",\n  \"timezone\": \"example\",\n  \"scheduledAt\": \"2026-09-16T12:00:00Z\",\n  \"intervalSeconds\": 1,\n  \"target\": {\n    \"url\": \"https://example.com/callback\",\n    \"method\": \"example\",\n    \"kind\": \"example\",\n    \"payload\": {\n      \"example\": \"value\"\n    }\n  },\n  \"state\": \"SCHEDULE_STATUS_ACTIVE\",\n  \"retryPolicy\": {\n    \"maxAttempts\": 1,\n    \"initialBackoffMs\": 1,\n    \"maxBackoffMs\": 1\n  },\n  \"metadata\": {\n    \"example\": \"value\"\n  },\n  \"autoPauseThreshold\": 1,\n  \"externalId\": \"example_123\",\n  \"createdAt\": \"2026-09-16T12:00:00Z\",\n  \"createdBySubject\": \"example\",\n  \"updatedAt\": \"2026-09-16T12:00:00Z\",\n  \"updatedBySubject\": \"example\",\n  \"pausedAt\": \"2026-09-16T12:00:00Z\",\n  \"pausedBySubject\": \"example\",\n  \"pausedReason\": \"example\",\n  \"resumedAt\": \"2026-09-16T12:00:00Z\",\n  \"resumedBySubject\": \"example\",\n  \"deletedAt\": \"2026-09-16T12:00:00Z\",\n  \"deletedBySubject\": \"example\",\n  \"lastTriggeredAt\": \"2026-09-16T12:00:00Z\",\n  \"nextTriggerAt\": \"2026-09-16T12:00:00Z\",\n  \"triggerCount\": \"1\",\n  \"failureCount\": \"1\",\n  \"consecutiveFailureCount\": \"1\"\n}"
                }
              ]
            },
            {
              "name": "Delete a scheduled job",
              "request": {
                "name": "Delete a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Soft-deletes the schedule and stops future scheduling. The record is retained for inspection. Already dispatched work and its external effects are not undone by deleting the schedule.\n\n## Named request examples\n\n### scheduled-jobs-deleteJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-05-request\n\nGuide request for 4. Remove this reminder. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/delete-job",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "delete-job"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-deleteJob-response",
                  "originalRequest": {
                    "name": "Delete a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Soft-deletes the schedule and stops future scheduling. The record is retained for inspection. Already dispatched work and its external effects are not undone by deleting the schedule.\n\n## Named request examples\n\n### scheduled-jobs-deleteJob-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-managing-05-request\n\nGuide request for 4. Remove this reminder. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/delete-job",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "delete-job"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled job deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}"
                }
              ]
            },
            {
              "name": "Delete all scheduled jobs for a project",
              "request": {
                "name": "Delete all scheduled jobs for a project",
                "description": {
                  "type": "text/markdown",
                  "content": "Soft-deletes every scheduled job belonging to the tenant and project in\nthe request context. Intended as a tenant lifecycle hook invoked during\nproject teardown. The request body carries no fields — tenant and\nproject are derived from ingress headers.\n\n## Named request examples\n\n### scheduled-jobs-deleteJobsForProject-request\n\nDelete all jobs in the authenticated project; this operation has no per-job selector.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/delete-jobs-for-project",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "delete-jobs-for-project"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-deleteJobsForProject-response",
                  "originalRequest": {
                    "name": "Delete all scheduled jobs for a project",
                    "description": {
                      "type": "text/markdown",
                      "content": "Soft-deletes every scheduled job belonging to the tenant and project in\nthe request context. Intended as a tenant lifecycle hook invoked during\nproject teardown. The request body carries no fields — tenant and\nproject are derived from ingress headers.\n\n## Named request examples\n\n### scheduled-jobs-deleteJobsForProject-request\n\nDelete all jobs in the authenticated project; this operation has no per-job selector.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/delete-jobs-for-project",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "delete-jobs-for-project"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled jobs deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deletedCount\": 1\n}"
                },
                {
                  "name": "cookbook-core-platform-scheduling-managing-json-02-response",
                  "originalRequest": {
                    "name": "Delete all scheduled jobs for a project",
                    "description": {
                      "type": "text/markdown",
                      "content": "Soft-deletes every scheduled job belonging to the tenant and project in\nthe request context. Intended as a tenant lifecycle hook invoked during\nproject teardown. The request body carries no fields — tenant and\nproject are derived from ingress headers.\n\n## Named request examples\n\n### scheduled-jobs-deleteJobsForProject-request\n\nDelete all jobs in the authenticated project; this operation has no per-job selector.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/delete-jobs-for-project",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "delete-jobs-for-project"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled jobs deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deletedCount\": 47\n}"
                }
              ]
            },
            {
              "name": "Delete all scheduled jobs for the calling owner",
              "request": {
                "name": "Delete all scheduled jobs for the calling owner",
                "description": {
                  "type": "text/markdown",
                  "content": "Soft-deletes schedules owned by the authenticated beneficiary within the verified tenant/project context. This is an explicit schedule-cleanup operation for offboarding or user-requested deletion. Do not call it on sign-out: schedules belong to the user/project and are not scoped to the current device session.\n\n## Named request examples\n\n### scheduled-jobs-deleteJobsForOwner-request\n\nDelete all jobs owned by the authenticated end user in the current project.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/delete-jobs-for-owner",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "delete-jobs-for-owner"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-deleteJobsForOwner-response",
                  "originalRequest": {
                    "name": "Delete all scheduled jobs for the calling owner",
                    "description": {
                      "type": "text/markdown",
                      "content": "Soft-deletes schedules owned by the authenticated beneficiary within the verified tenant/project context. This is an explicit schedule-cleanup operation for offboarding or user-requested deletion. Do not call it on sign-out: schedules belong to the user/project and are not scoped to the current device session.\n\n## Named request examples\n\n### scheduled-jobs-deleteJobsForOwner-request\n\nDelete all jobs owned by the authenticated end user in the current project.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/delete-jobs-for-owner",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "delete-jobs-for-owner"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled jobs deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deletedCount\": 1\n}"
                },
                {
                  "name": "cookbook-core-platform-scheduling-managing-json-01-response",
                  "originalRequest": {
                    "name": "Delete all scheduled jobs for the calling owner",
                    "description": {
                      "type": "text/markdown",
                      "content": "Soft-deletes schedules owned by the authenticated beneficiary within the verified tenant/project context. This is an explicit schedule-cleanup operation for offboarding or user-requested deletion. Do not call it on sign-out: schedules belong to the user/project and are not scoped to the current device session.\n\n## Named request examples\n\n### scheduled-jobs-deleteJobsForOwner-request\n\nDelete all jobs owned by the authenticated end user in the current project.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/delete-jobs-for-owner",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "delete-jobs-for-owner"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Scheduled jobs deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deletedCount\": 3\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Execution History",
          "description": {
            "content": "Query execution records and delivery history. See the [Scheduled Jobs guide](/core-platform/scheduling) for status values, retry policy details, and response capture fields.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List executions for a scheduled job",
              "request": {
                "name": "List executions for a scheduled job",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated execution history for a scheduled job. Each record\ncaptures a single firing — its status, HTTP result, attempt number, and\nduration. Optionally filter by execution status.\n\n## Named request examples\n\n### scheduled-jobs-listExecutions-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-execution-01-request\n\nGuide request for Find where the missing digest stopped. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"pageSize\": 20,\n  \"statusFilter\": \"EXECUTION_STATUS_FAILED\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/scheduler/list-executions",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "scheduler",
                    "list-executions"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "scheduled-jobs-listExecutions-response",
                  "originalRequest": {
                    "name": "List executions for a scheduled job",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated execution history for a scheduled job. Each record\ncaptures a single firing — its status, HTTP result, attempt number, and\nduration. Optionally filter by execution status.\n\n## Named request examples\n\n### scheduled-jobs-listExecutions-request\n\nReplace scheduleId with the ID returned when the job was created.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}\n\n```\n\n### cookbook-core-platform-scheduling-execution-01-request\n\nGuide request for Find where the missing digest stopped. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n  \"pageSize\": 20,\n  \"statusFilter\": \"EXECUTION_STATUS_FAILED\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/scheduler/list-executions",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "scheduler",
                        "list-executions"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scheduleId\": \"sched_a1b2c3d4e5f60718\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Executions returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"executions\": [\n    {\n      \"executionId\": \"1\",\n      \"scheduleId\": \"sched_a1b2c3d4e5f60718\",\n      \"tenantId\": \"example_123\",\n      \"projectId\": \"example_123\",\n      \"scheduledTime\": \"2026-09-16T12:00:00Z\",\n      \"startedAt\": \"2026-09-16T12:00:00Z\",\n      \"completedAt\": \"2026-09-16T12:00:00Z\",\n      \"status\": \"EXECUTION_STATUS_COMPLETED\",\n      \"httpStatus\": 1,\n      \"attempt\": 1,\n      \"durationMs\": 1,\n      \"targetKind\": \"example\",\n      \"error\": \"example\",\n      \"riverJobId\": \"1\",\n      \"responseBody\": \"example\",\n      \"responseHeaders\": {},\n      \"responseTruncated\": true,\n      \"responseSizeBytes\": 1,\n      \"endReason\": \"example\"\n    }\n  ],\n  \"nextPageToken\": \"example\"\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Webhook APIs",
      "description": "Register HTTPS endpoints, subscribe them to events and inspect or retry deliveries.\n\nUse an authorized backend `sk_…` key in `X-API-Key`; these configuration operations do not need an end-user identity. A console JWT belongs to the separate console surface. See [Authentication](/core-platform/identity-access/authentication).\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` are not an authorization mechanism. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\n### Endpoints and subscriptions\n\nAn endpoint is your receiving URL; a subscription selects its events. Supplying `eventTypes` during endpoint creation also attempts a subscription, but the two writes can partially succeed. Reconcile before retrying. The current platform permits one live subscription per endpoint and rejects a second. Replacement by delete-then-create has a delivery gap; temporary overlap requires a separately created endpoint, receiver deduplication and a qualified cutover.\n\n<span id=\"addressing-subscriptions\"></span>\nSubscription references accept exactly one of `subscriptionId` or `externalId` where offered. An external ID is unique among live subscriptions in its current scope and may be reused after deletion; do not treat a reused alias as the original subscription’s immutable identity.\n\nProvider cursor traversal can produce estimated totals until exhausted. Re-queue acceptance is not proof of successful delivery or business processing.\n\n**Related guide:** [Webhooks](/integrations/webhooks)\n\n<span id=\"field-naming\"></span>\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Endpoints",
          "description": {
            "content": "Register and manage the URLs that receive webhook deliveries.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a webhook endpoint",
              "request": {
                "name": "Create a webhook endpoint",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates an endpoint and optionally attempts a subscription when eventTypes is provided. These provider writes are separate and can partially succeed. Reconcile the endpoint and subscriptions before retrying to avoid orphaned endpoints or duplicate deliveries.\n\n## Named request examples\n\n### webhooks-createWebhookEndpoint-request\n\nCreate a receiver for generation completion; replace the URL with your verified receiver.\n\n```json\n\n{\n  \"name\": \"Generation events\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-03-request\n\nGuide request for Step 5: Subscribe to the results webhook (Optional). Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"scheduled-agent-results\",\n  \"url\": \"https://api.example.com/hooks/agent-results\",\n  \"description\": \"Receives assistant messages from scheduled agent runs\",\n  \"eventTypes\": [\n    \"llm.message_published\"\n  ]\n}\n\n```\n\n### cookbook-integrations-webhooks-endpoints-01-request\n\nGuide request for 1. Register the receiver for completed runs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"orders-service\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"description\": \"Order pipeline consumer\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/create-endpoint",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "create-endpoint"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Generation events\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-createWebhookEndpoint-response",
                  "originalRequest": {
                    "name": "Create a webhook endpoint",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates an endpoint and optionally attempts a subscription when eventTypes is provided. These provider writes are separate and can partially succeed. Reconcile the endpoint and subscriptions before retrying to avoid orphaned endpoints or duplicate deliveries.\n\n## Named request examples\n\n### webhooks-createWebhookEndpoint-request\n\nCreate a receiver for generation completion; replace the URL with your verified receiver.\n\n```json\n\n{\n  \"name\": \"Generation events\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-03-request\n\nGuide request for Step 5: Subscribe to the results webhook (Optional). Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"scheduled-agent-results\",\n  \"url\": \"https://api.example.com/hooks/agent-results\",\n  \"description\": \"Receives assistant messages from scheduled agent runs\",\n  \"eventTypes\": [\n    \"llm.message_published\"\n  ]\n}\n\n```\n\n### cookbook-integrations-webhooks-endpoints-01-request\n\nGuide request for 1. Register the receiver for completed runs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"orders-service\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"description\": \"Order pipeline consumer\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/create-endpoint",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "create-endpoint"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"Generation events\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Endpoint created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"endpoint\": {\n    \"id\": \"example_123\",\n    \"name\": \"example\",\n    \"url\": \"https://example.com/resource\",\n    \"description\": \"example\",\n    \"status\": \"ENDPOINT_STATUS_ACTIVE\",\n    \"secret\": \"example\",\n    \"httpTimeout\": 1,\n    \"rateLimit\": 1,\n    \"rateLimitDuration\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  },\n  \"subscription\": {\n    \"id\": \"example_123\",\n    \"name\": \"example\",\n    \"endpointId\": \"https://example.com/resource\",\n    \"eventTypes\": [\n      \"example\"\n    ],\n    \"filter\": {},\n    \"retryConfig\": {\n      \"strategy\": \"RETRY_STRATEGY_LINEAR\",\n      \"retryCount\": 1,\n      \"intervalSeconds\": 1\n    },\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"externalId\": \"example_123\"\n  }\n}"
                },
                {
                  "name": "cookbook-core-platform-scheduling-build-scheduled-agents-json-04-response",
                  "originalRequest": {
                    "name": "Create a webhook endpoint",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates an endpoint and optionally attempts a subscription when eventTypes is provided. These provider writes are separate and can partially succeed. Reconcile the endpoint and subscriptions before retrying to avoid orphaned endpoints or duplicate deliveries.\n\n## Named request examples\n\n### webhooks-createWebhookEndpoint-request\n\nCreate a receiver for generation completion; replace the URL with your verified receiver.\n\n```json\n\n{\n  \"name\": \"Generation events\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```\n\n### cookbook-core-platform-scheduling-build-scheduled-agents-03-request\n\nGuide request for Step 5: Subscribe to the results webhook (Optional). Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"scheduled-agent-results\",\n  \"url\": \"https://api.example.com/hooks/agent-results\",\n  \"description\": \"Receives assistant messages from scheduled agent runs\",\n  \"eventTypes\": [\n    \"llm.message_published\"\n  ]\n}\n\n```\n\n### cookbook-integrations-webhooks-endpoints-01-request\n\nGuide request for 1. Register the receiver for completed runs. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"orders-service\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"description\": \"Order pipeline consumer\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/create-endpoint",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "create-endpoint"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"Generation events\",\n  \"url\": \"https://api.example.com/hooks/travila\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Endpoint created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"endpoint\": {\n    \"id\": \"ep_abc123\",\n    \"name\": \"scheduled-agent-results\",\n    \"url\": \"https://api.example.com/hooks/agent-results\",\n    \"status\": \"ENDPOINT_STATUS_ACTIVE\",\n    \"secret\": \"whsec_…\"\n  },\n  \"subscription\": {\n    \"id\": \"sub_def456\",\n    \"endpointId\": \"ep_abc123\",\n    \"eventTypes\": [\n      \"llm.message_published\"\n    ]\n  }\n}"
                }
              ]
            },
            {
              "name": "List webhook endpoints",
              "request": {
                "name": "List webhook endpoints",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of all webhook endpoints belonging to the authenticated tenant.\n\n## Named request examples\n\n### webhooks-listWebhookEndpoints-request\n\nList endpoints in the authenticated scope with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-webhooks-endpoints-02-request\n\nGuide request for Save the signing secret. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"perPage\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/list-endpoints",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "list-endpoints"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-listWebhookEndpoints-response",
                  "originalRequest": {
                    "name": "List webhook endpoints",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of all webhook endpoints belonging to the authenticated tenant.\n\n## Named request examples\n\n### webhooks-listWebhookEndpoints-request\n\nList endpoints in the authenticated scope with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-webhooks-endpoints-02-request\n\nGuide request for Save the signing secret. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"perPage\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/list-endpoints",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "list-endpoints"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Endpoints listed successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"endpoints\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"url\": \"https://example.com/resource\",\n      \"description\": \"example\",\n      \"status\": \"ENDPOINT_STATUS_ACTIVE\",\n      \"secret\": \"example\",\n      \"httpTimeout\": 1,\n      \"rateLimit\": 1,\n      \"rateLimitDuration\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 1,\n    \"page\": 1,\n    \"perPage\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Update a webhook endpoint",
              "request": {
                "name": "Update a webhook endpoint",
                "description": {
                  "type": "text/markdown",
                  "content": "Reads the endpoint and overlays nonempty name, URL and description before sending the provider a replacement. Empty strings do not clear fields. There is no public revision precondition, so concurrent changes can overwrite one another.\n\n## Named request examples\n\n### webhooks-updateWebhookEndpoint-request\n\nUpdate an existing endpoint after verifying the replacement receiver.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"url\": \"https://api.example.com/hooks/travila-v2\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/update-endpoint",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "update-endpoint"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"url\": \"https://api.example.com/hooks/travila-v2\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-updateWebhookEndpoint-response",
                  "originalRequest": {
                    "name": "Update a webhook endpoint",
                    "description": {
                      "type": "text/markdown",
                      "content": "Reads the endpoint and overlays nonempty name, URL and description before sending the provider a replacement. Empty strings do not clear fields. There is no public revision precondition, so concurrent changes can overwrite one another.\n\n## Named request examples\n\n### webhooks-updateWebhookEndpoint-request\n\nUpdate an existing endpoint after verifying the replacement receiver.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"url\": \"https://api.example.com/hooks/travila-v2\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/update-endpoint",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "update-endpoint"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"url\": \"https://api.example.com/hooks/travila-v2\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Endpoint updated successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"endpoint\": {\n    \"id\": \"example_123\",\n    \"name\": \"example\",\n    \"url\": \"https://example.com/resource\",\n    \"description\": \"example\",\n    \"status\": \"ENDPOINT_STATUS_ACTIVE\",\n    \"secret\": \"example\",\n    \"httpTimeout\": 1,\n    \"rateLimit\": 1,\n    \"rateLimitDuration\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Delete a webhook endpoint",
              "request": {
                "name": "Delete a webhook endpoint",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the endpoint and its associated provider subscriptions. Already dispatched deliveries can still reach the receiver; deletion does not attest to erasure of historical deliveries or backups.\n\n## Named request examples\n\n### webhooks-deleteWebhookEndpoint-request\n\nUse an existing endpointId when retiring a receiver.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/delete-endpoint",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "delete-endpoint"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"endpointId\": \"ep_abc123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-deleteWebhookEndpoint-response",
                  "originalRequest": {
                    "name": "Delete a webhook endpoint",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the endpoint and its associated provider subscriptions. Already dispatched deliveries can still reach the receiver; deletion does not attest to erasure of historical deliveries or backups.\n\n## Named request examples\n\n### webhooks-deleteWebhookEndpoint-request\n\nUse an existing endpointId when retiring a receiver.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/delete-endpoint",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "delete-endpoint"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"endpointId\": \"ep_abc123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Endpoint deleted successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Subscriptions",
          "description": {
            "content": "Bind an endpoint to event types. One live subscription is allowed per endpoint; subscriptions on separate endpoints can receive the same event.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a webhook subscription",
              "request": {
                "name": "Create a webhook subscription",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a new event subscription on an existing webhook endpoint. The subscription filters events by the specified event types and delivers matching events to the endpoint URL.\n\n### One subscription per endpoint\n\nOnly one live subscription is allowed per endpoint; a second fails with `ALREADY_EXISTS`. There is no public update-subscription operation. [Delete the old subscription](/api/webhooks/delete-webhook-subscription) and create its replacement when a delivery gap is acceptable.\n\n## Named request examples\n\n### webhooks-createWebhookSubscription-request\n\nSubscribe an existing endpoint that does not already have a live subscription.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/create-subscription",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "create-subscription"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-createWebhookSubscription-response",
                  "originalRequest": {
                    "name": "Create a webhook subscription",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a new event subscription on an existing webhook endpoint. The subscription filters events by the specified event types and delivers matching events to the endpoint URL.\n\n### One subscription per endpoint\n\nOnly one live subscription is allowed per endpoint; a second fails with `ALREADY_EXISTS`. There is no public update-subscription operation. [Delete the old subscription](/api/webhooks/delete-webhook-subscription) and create its replacement when a delivery gap is acceptable.\n\n## Named request examples\n\n### webhooks-createWebhookSubscription-request\n\nSubscribe an existing endpoint that does not already have a live subscription.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/create-subscription",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "create-subscription"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"eventTypes\": [\n    \"llm.generation_completed\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscription created successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"subscription\": {\n    \"id\": \"example_123\",\n    \"name\": \"example\",\n    \"endpointId\": \"https://example.com/resource\",\n    \"eventTypes\": [\n      \"example\"\n    ],\n    \"filter\": {},\n    \"retryConfig\": {\n      \"strategy\": \"RETRY_STRATEGY_LINEAR\",\n      \"retryCount\": 1,\n      \"intervalSeconds\": 1\n    },\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"externalId\": \"example_123\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List webhook subscriptions",
              "request": {
                "name": "List webhook subscriptions",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated list of webhook subscriptions. Optionally filter by endpoint ID.\n\n## Named request examples\n\n### webhooks-listWebhookSubscriptions-request\n\nList subscriptions for an existing endpoint.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/list-subscriptions",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "list-subscriptions"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-listWebhookSubscriptions-response",
                  "originalRequest": {
                    "name": "List webhook subscriptions",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated list of webhook subscriptions. Optionally filter by endpoint ID.\n\n## Named request examples\n\n### webhooks-listWebhookSubscriptions-request\n\nList subscriptions for an existing endpoint.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/list-subscriptions",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "list-subscriptions"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscriptions listed successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"subscriptions\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"endpointId\": \"https://example.com/resource\",\n      \"eventTypes\": [\n        \"example\"\n      ],\n      \"filter\": {},\n      \"retryConfig\": {\n        \"strategy\": \"RETRY_STRATEGY_LINEAR\",\n        \"retryCount\": 1,\n        \"intervalSeconds\": 1\n      },\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"externalId\": \"example_123\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 1,\n    \"page\": 1,\n    \"perPage\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Delete a webhook subscription",
              "request": {
                "name": "Delete a webhook subscription",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the subscription without deleting its endpoint. Pending/in-flight provider deliveries and retained history require separate handling; deletion is not remote-effect rollback.\n\n## Named request examples\n\n### webhooks-deleteWebhookSubscription-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"subscriptionId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/delete-subscription",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "delete-subscription"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"subscriptionId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-deleteWebhookSubscription-response",
                  "originalRequest": {
                    "name": "Delete a webhook subscription",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the subscription without deleting its endpoint. Pending/in-flight provider deliveries and retained history require separate handling; deletion is not remote-effect rollback.\n\n## Named request examples\n\n### webhooks-deleteWebhookSubscription-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"subscriptionId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/delete-subscription",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "delete-subscription"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"subscriptionId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Subscription deleted successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Deliveries",
          "description": {
            "content": "Inspect delivery records and request another attempt for eligible retained deliveries.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List webhook event deliveries",
              "request": {
                "name": "List webhook event deliveries",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns paginated delivery records. A record is not a complete log of every HTTP attempt.\n\n## Named request examples\n\n### webhooks-listWebhookDeliveries-request\n\nInspect a bounded page of deliveries for an existing endpoint.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}\n\n```\n\n### cookbook-integrations-webhooks-deliveries-01-request\n\nGuide request for 1. Find where the update stopped. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"status\": \"DELIVERY_STATUS_FAILED\",\n  \"createdAfter\": \"2026-08-01T00:00:00Z\",\n  \"perPage\": 50\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/list-deliveries",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "list-deliveries"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-listWebhookDeliveries-response",
                  "originalRequest": {
                    "name": "List webhook event deliveries",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns paginated delivery records. A record is not a complete log of every HTTP attempt.\n\n## Named request examples\n\n### webhooks-listWebhookDeliveries-request\n\nInspect a bounded page of deliveries for an existing endpoint.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}\n\n```\n\n### cookbook-integrations-webhooks-deliveries-01-request\n\nGuide request for 1. Find where the update stopped. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"endpointId\": \"ep_abc123\",\n  \"status\": \"DELIVERY_STATUS_FAILED\",\n  \"createdAfter\": \"2026-08-01T00:00:00Z\",\n  \"perPage\": 50\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/list-deliveries",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "list-deliveries"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"endpointId\": \"ep_abc123\",\n  \"page\": 1,\n  \"perPage\": 25\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Deliveries listed successfully",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deliveries\": [\n    {\n      \"id\": \"example_123\",\n      \"eventId\": \"example_123\",\n      \"endpointId\": \"https://example.com/resource\",\n      \"status\": \"DELIVERY_STATUS_SCHEDULED\",\n      \"attempts\": 1,\n      \"eventType\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\",\n      \"httpStatus\": 1,\n      \"responseData\": \"example\",\n      \"error\": \"example\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 1,\n    \"page\": 1,\n    \"perPage\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Retry a failed webhook delivery",
              "request": {
                "name": "Retry a failed webhook delivery",
                "description": {
                  "type": "text/markdown",
                  "content": "Re-queues a previously failed or discarded event delivery for another delivery attempt.\n\nA successful response only acknowledges re-queueing. The receiver must deduplicate repeated events and distinguish receipt from completed business work.\n\n## Named request examples\n\n### webhooks-retryWebhookDelivery-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"deliveryId\": \"example_123\"\n}\n\n```\n\n### cookbook-integrations-webhooks-deliveries-02-request\n\nGuide request for 3. Replay the original eligible delivery. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"deliveryId\": \"del_xyz789\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/webhooks/retry-delivery",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "webhooks",
                    "retry-delivery"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"deliveryId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "webhooks-retryWebhookDelivery-response",
                  "originalRequest": {
                    "name": "Retry a failed webhook delivery",
                    "description": {
                      "type": "text/markdown",
                      "content": "Re-queues a previously failed or discarded event delivery for another delivery attempt.\n\nA successful response only acknowledges re-queueing. The receiver must deduplicate repeated events and distinguish receipt from completed business work.\n\n## Named request examples\n\n### webhooks-retryWebhookDelivery-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"deliveryId\": \"example_123\"\n}\n\n```\n\n### cookbook-integrations-webhooks-deliveries-02-request\n\nGuide request for 3. Replay the original eligible delivery. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"deliveryId\": \"del_xyz789\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/webhooks/retry-delivery",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "webhooks",
                        "retry-delivery"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"deliveryId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Another attempt requested; inspect delivery status for the outcome",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"delivery\": {\n    \"id\": \"example_123\",\n    \"eventId\": \"example_123\",\n    \"endpointId\": \"https://example.com/resource\",\n    \"status\": \"DELIVERY_STATUS_SCHEDULED\",\n    \"attempts\": 1,\n    \"eventType\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\",\n    \"httpStatus\": 1,\n    \"responseData\": \"example\",\n    \"error\": \"example\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Agent Profile APIs",
      "description": "Manage agent profiles, their versions and reusable prompt fragments. Select profiles on the conversation API using `activeProfileId` at creation or `setActiveProfileId` when sending.\n\nUse an authorized backend `sk_…` key in `X-API-Key`; these configuration operations do not need an end-user identity. A console JWT belongs to the separate console surface. See [Authentication](/core-platform/identity-access/authentication).\n\n<span id=\"scoping\"></span>\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nA profile version pins that profile record. Current fragment resolution can use the latest fragment set; a profile version alone is not a complete record of the prompt or configuration used by a turn.\n\n**Related guide:** [Create and version agent profiles](/managed-agents/profiles-prompts)\n\n<span id=\"field-naming\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Profiles",
          "description": {
            "content": "Create, read, update, and delete agent profiles.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create an agent profile",
              "request": {
                "name": "Create an agent profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a profile in the caller's project library. A duplicate profile ID fails\nwith `ALREADY_EXISTS`; use [update](/api/agent-profiles/update-agent-profile) to\nreplace an existing profile. The store assigns the initial immutable version.\nThe system prompt must be a valid template and every variable spec needs a unique name;\notherwise create fails with `400`.\n\nEnabled profiles are immediately selectable. Disabled profiles are omitted from\nthe selection library, and a direct send naming one fails with\n`ACTIVE_PROFILE_DISABLED`. Queued messages currently take a different fallback\npath; see [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n\n## Named request examples\n\n### agent-profiles-createAgentProfile-request\n\nCreate a reusable support profile; choose a new profileId in your project.\n\n```json\n\n{\n  \"profile\": {\n    \"profileId\": \"support-assistant\",\n    \"name\": \"Support assistant\",\n    \"whenToUse\": \"Help users answer product questions.\",\n    \"generationConfig\": {\n      \"systemPrompt\": \"Answer clearly using the supplied product information.\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-01-request\n\nGuide request for Step 1: Save the assistant instructions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profile\": {\n    \"profileId\": \"nutrition_coach\",\n    \"name\": \"Nutrition Coach\",\n    \"description\": \"Food, meals and macros.\",\n    \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n    \"keywords\": [\n      \"nutrition\",\n      \"food\",\n      \"macros\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"YOUR_MODEL_ID\",\n      \"systemPrompt\": \"You are a nutrition coach. Be concise and practical.\",\n      \"temperature\": 0.4\n    }\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/create",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "create"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"profile\": {\n    \"profileId\": \"support-assistant\",\n    \"name\": \"Support assistant\",\n    \"whenToUse\": \"Help users answer product questions.\",\n    \"generationConfig\": {\n      \"systemPrompt\": \"Answer clearly using the supplied product information.\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-createAgentProfile-response",
                  "originalRequest": {
                    "name": "Create an agent profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a profile in the caller's project library. A duplicate profile ID fails\nwith `ALREADY_EXISTS`; use [update](/api/agent-profiles/update-agent-profile) to\nreplace an existing profile. The store assigns the initial immutable version.\nThe system prompt must be a valid template and every variable spec needs a unique name;\notherwise create fails with `400`.\n\nEnabled profiles are immediately selectable. Disabled profiles are omitted from\nthe selection library, and a direct send naming one fails with\n`ACTIVE_PROFILE_DISABLED`. Queued messages currently take a different fallback\npath; see [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n\n## Named request examples\n\n### agent-profiles-createAgentProfile-request\n\nCreate a reusable support profile; choose a new profileId in your project.\n\n```json\n\n{\n  \"profile\": {\n    \"profileId\": \"support-assistant\",\n    \"name\": \"Support assistant\",\n    \"whenToUse\": \"Help users answer product questions.\",\n    \"generationConfig\": {\n      \"systemPrompt\": \"Answer clearly using the supplied product information.\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-01-request\n\nGuide request for Step 1: Save the assistant instructions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profile\": {\n    \"profileId\": \"nutrition_coach\",\n    \"name\": \"Nutrition Coach\",\n    \"description\": \"Food, meals and macros.\",\n    \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n    \"keywords\": [\n      \"nutrition\",\n      \"food\",\n      \"macros\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"YOUR_MODEL_ID\",\n      \"systemPrompt\": \"You are a nutrition coach. Be concise and practical.\",\n      \"temperature\": 0.4\n    }\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/create",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "create"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profile\": {\n    \"profileId\": \"support-assistant\",\n    \"name\": \"Support assistant\",\n    \"whenToUse\": \"Help users answer product questions.\",\n    \"generationConfig\": {\n      \"systemPrompt\": \"Answer clearly using the supplied product information.\"\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile created; the stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profile\": {\n    \"profileId\": \"example_123\",\n    \"name\": \"example\",\n    \"description\": \"example\",\n    \"whenToUse\": \"example\",\n    \"keywords\": [\n      \"example_123\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"example\",\n      \"models\": [\n        \"example\"\n      ],\n      \"systemPrompt\": \"Example text\",\n      \"transforms\": [\n        \"example\"\n      ],\n      \"temperature\": 1,\n      \"topP\": 1,\n      \"maxOutputTokens\": 1,\n      \"frequencyPenalty\": 1,\n      \"presencePenalty\": 1,\n      \"stopSequences\": [\n        \"example\"\n      ],\n      \"seed\": \"1\",\n      \"allowParallelToolCalls\": true,\n      \"topK\": 1,\n      \"repetitionPenalty\": 1,\n      \"topLogprobs\": 1,\n      \"minP\": 1,\n      \"topA\": 1,\n      \"user\": \"example\",\n      \"modalities\": [\n        \"MODALITY_TEXT\"\n      ],\n      \"languagePreference\": \"en-US\",\n      \"requestTimeoutSeconds\": 1,\n      \"clearTools\": true\n    },\n    \"mcpServers\": [\n      {\n        \"serverId\": \"example_123\",\n        \"enabled\": true,\n        \"priority\": 1,\n        \"allowlistToolPatterns\": [\n          \"example\"\n        ],\n        \"blocklistToolPatterns\": [\n          \"example\"\n        ]\n      }\n    ],\n    \"variableSpecs\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"required\": true,\n        \"defaultValue\": \"example\",\n        \"type\": \"VAR_TYPE_STRING\"\n      }\n    ],\n    \"version\": 1,\n    \"disableDefaultTools\": true\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-index-json-01-response",
                  "originalRequest": {
                    "name": "Create an agent profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a profile in the caller's project library. A duplicate profile ID fails\nwith `ALREADY_EXISTS`; use [update](/api/agent-profiles/update-agent-profile) to\nreplace an existing profile. The store assigns the initial immutable version.\nThe system prompt must be a valid template and every variable spec needs a unique name;\notherwise create fails with `400`.\n\nEnabled profiles are immediately selectable. Disabled profiles are omitted from\nthe selection library, and a direct send naming one fails with\n`ACTIVE_PROFILE_DISABLED`. Queued messages currently take a different fallback\npath; see [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n\n## Named request examples\n\n### agent-profiles-createAgentProfile-request\n\nCreate a reusable support profile; choose a new profileId in your project.\n\n```json\n\n{\n  \"profile\": {\n    \"profileId\": \"support-assistant\",\n    \"name\": \"Support assistant\",\n    \"whenToUse\": \"Help users answer product questions.\",\n    \"generationConfig\": {\n      \"systemPrompt\": \"Answer clearly using the supplied product information.\"\n    }\n  }\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-01-request\n\nGuide request for Step 1: Save the assistant instructions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profile\": {\n    \"profileId\": \"nutrition_coach\",\n    \"name\": \"Nutrition Coach\",\n    \"description\": \"Food, meals and macros.\",\n    \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n    \"keywords\": [\n      \"nutrition\",\n      \"food\",\n      \"macros\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"YOUR_MODEL_ID\",\n      \"systemPrompt\": \"You are a nutrition coach. Be concise and practical.\",\n      \"temperature\": 0.4\n    }\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/create",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "create"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profile\": {\n    \"profileId\": \"support-assistant\",\n    \"name\": \"Support assistant\",\n    \"whenToUse\": \"Help users answer product questions.\",\n    \"generationConfig\": {\n      \"systemPrompt\": \"Answer clearly using the supplied product information.\"\n    }\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile created; the stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profile\": {\n    \"profileId\": \"nutrition_coach\",\n    \"name\": \"Nutrition Coach\",\n    \"description\": \"Food, meals and macros.\",\n    \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n    \"keywords\": [\n      \"nutrition\",\n      \"food\",\n      \"macros\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"YOUR_MODEL_ID\",\n      \"systemPrompt\": \"You are a nutrition coach. Be concise and practical.\",\n      \"temperature\": 0.4\n    },\n    \"version\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Get an agent profile",
              "request": {
                "name": "Get an agent profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a full profile record at the selected immutable version. A profile or\nversion that never existed returns `NOT_FOUND`.\n\n## Named request examples\n\n### agent-profiles-getAgentProfile-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-02-request\n\nGuide request for Step 2: Confirm what you saved. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-json-02-request\n\nGuide request for Step 2: Confirm what you saved. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"version\": 3\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/get",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "get"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-getAgentProfile-response",
                  "originalRequest": {
                    "name": "Get an agent profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a full profile record at the selected immutable version. A profile or\nversion that never existed returns `NOT_FOUND`.\n\n## Named request examples\n\n### agent-profiles-getAgentProfile-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-02-request\n\nGuide request for Step 2: Confirm what you saved. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-json-02-request\n\nGuide request for Step 2: Confirm what you saved. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"version\": 3\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/get",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "get"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profile\": {\n    \"profileId\": \"example_123\",\n    \"name\": \"example\",\n    \"description\": \"example\",\n    \"whenToUse\": \"example\",\n    \"keywords\": [\n      \"example_123\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"example\",\n      \"models\": [\n        \"example\"\n      ],\n      \"systemPrompt\": \"Example text\",\n      \"transforms\": [\n        \"example\"\n      ],\n      \"temperature\": 1,\n      \"topP\": 1,\n      \"maxOutputTokens\": 1,\n      \"frequencyPenalty\": 1,\n      \"presencePenalty\": 1,\n      \"stopSequences\": [\n        \"example\"\n      ],\n      \"seed\": \"1\",\n      \"allowParallelToolCalls\": true,\n      \"topK\": 1,\n      \"repetitionPenalty\": 1,\n      \"topLogprobs\": 1,\n      \"minP\": 1,\n      \"topA\": 1,\n      \"user\": \"example\",\n      \"modalities\": [\n        \"MODALITY_TEXT\"\n      ],\n      \"languagePreference\": \"en-US\",\n      \"requestTimeoutSeconds\": 1,\n      \"clearTools\": true\n    },\n    \"mcpServers\": [\n      {\n        \"serverId\": \"example_123\",\n        \"enabled\": true,\n        \"priority\": 1,\n        \"allowlistToolPatterns\": [\n          \"example\"\n        ],\n        \"blocklistToolPatterns\": [\n          \"example\"\n        ]\n      }\n    ],\n    \"variableSpecs\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"required\": true,\n        \"defaultValue\": \"example\",\n        \"type\": \"VAR_TYPE_STRING\"\n      }\n    ],\n    \"version\": 1,\n    \"disableDefaultTools\": true\n  }\n}"
                }
              ]
            },
            {
              "name": "List agent profiles",
              "request": {
                "name": "List agent profiles",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a paginated collection of full profile records for inspection or editing.\nFor a lightweight selection view, use\n[library](/api/agent-profiles/get-agent-profile-library), which omits runtime\nconfiguration.\n\n## Named request examples\n\n### agent-profiles-listAgentProfiles-request\n\nRead a bounded first page from the project library.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-06-request\n\nGuide request for Variant: inventory profiles before a shared change. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/list",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "list"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-listAgentProfiles-response",
                  "originalRequest": {
                    "name": "List agent profiles",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated collection of full profile records for inspection or editing.\nFor a lightweight selection view, use\n[library](/api/agent-profiles/get-agent-profile-library), which omits runtime\nconfiguration.\n\n## Named request examples\n\n### agent-profiles-listAgentProfiles-request\n\nRead a bounded first page from the project library.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-06-request\n\nGuide request for Variant: inventory profiles before a shared change. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/list",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "list"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Page of profiles",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profiles\": [\n    {\n      \"profileId\": \"example_123\",\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"whenToUse\": \"example\",\n      \"keywords\": [\n        \"example_123\"\n      ],\n      \"enabled\": true,\n      \"generationConfig\": {\n        \"model\": \"example\",\n        \"models\": [\n          \"example\"\n        ],\n        \"systemPrompt\": \"Example text\",\n        \"transforms\": [\n          \"example\"\n        ],\n        \"temperature\": 1,\n        \"topP\": 1,\n        \"maxOutputTokens\": 1,\n        \"frequencyPenalty\": 1,\n        \"presencePenalty\": 1,\n        \"stopSequences\": [\n          \"example\"\n        ],\n        \"seed\": \"1\",\n        \"allowParallelToolCalls\": true,\n        \"topK\": 1,\n        \"repetitionPenalty\": 1,\n        \"topLogprobs\": 1,\n        \"minP\": 1,\n        \"topA\": 1,\n        \"user\": \"example\",\n        \"modalities\": [\n          \"MODALITY_TEXT\"\n        ],\n        \"languagePreference\": \"en-US\",\n        \"requestTimeoutSeconds\": 1,\n        \"clearTools\": true\n      },\n      \"mcpServers\": [\n        {\n          \"serverId\": \"example_123\",\n          \"enabled\": true,\n          \"priority\": 1,\n          \"allowlistToolPatterns\": [\n            \"example\"\n          ],\n          \"blocklistToolPatterns\": [\n            \"example\"\n          ]\n        }\n      ],\n      \"variableSpecs\": [\n        {\n          \"name\": \"example\",\n          \"description\": \"example\",\n          \"required\": true,\n          \"defaultValue\": \"example\",\n          \"type\": \"VAR_TYPE_STRING\"\n        }\n      ],\n      \"version\": 1,\n      \"disableDefaultTools\": true\n    }\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": true\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-index-json-05-response",
                  "originalRequest": {
                    "name": "List agent profiles",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a paginated collection of full profile records for inspection or editing.\nFor a lightweight selection view, use\n[library](/api/agent-profiles/get-agent-profile-library), which omits runtime\nconfiguration.\n\n## Named request examples\n\n### agent-profiles-listAgentProfiles-request\n\nRead a bounded first page from the project library.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-06-request\n\nGuide request for Variant: inventory profiles before a shared change. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/list",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "list"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Page of profiles",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profiles\": [\n    {\n      \"profileId\": \"nutrition_coach\",\n      \"name\": \"Nutrition Coach\",\n      \"version\": 3\n    }\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": false\n}"
                }
              ]
            },
            {
              "name": "Update an agent profile",
              "request": {
                "name": "Update an agent profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Updates an agent profile. Each successful update appends a new immutable version; the\nprofile ID remains fixed and the store assigns the version.\n\n:::info Which fields change\nWithout an [`updateMask`](/api/agent-profiles/update-agent-profile#request-field-updatemask),\nonly the fields the supplied [`profile`](/api/agent-profiles/update-agent-profile#request-field-profile)\nsets change, and inside `generationConfig` only the sub-fields it sets. Nothing left out\nis cleared, so clearing a field needs a mask. A mask naming fields changes exactly those,\nclearing a named field the profile leaves unset; to replace the whole profile, name\nevery field. An update that would leave `name` or `whenToUse` empty is refused with\n`400`, as is one writing a system prompt that is not a valid template or variable specs\nwithout unique names.\n:::\n\n## Named request examples\n\n### agent-profiles-updateAgentProfile-request\n\nRename an existing profile without replacing its generation configuration.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\",\n  \"profile\": {\n    \"name\": \"Customer support assistant\"\n  },\n  \"updateMask\": \"name\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-03-request\n\nGuide request for Recipe: change the response style without replacing the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"profile\": {\n    \"generationConfig\": {\n      \"temperature\": 0.2\n    }\n  },\n  \"updateMask\": \"generationConfig.temperature\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-json-06-request\n\nGuide request for Retire an assistant without stranding its conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"profile\": {\n    \"enabled\": false\n  },\n  \"updateMask\": \"enabled\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-json-02-request\n\nGuide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"profile\": {\n    \"generationConfig\": {\n      \"systemPrompt\": \"{{template \\\"safety\\\" .}}\\n\\nYou are a nutrition coach for {{.userName}}.\"\n    }\n  },\n  \"updateMask\": \"generationConfig.systemPrompt\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/update",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "update"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"profileId\": \"support-assistant\",\n  \"profile\": {\n    \"name\": \"Customer support assistant\"\n  },\n  \"updateMask\": \"name\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-updateAgentProfile-response",
                  "originalRequest": {
                    "name": "Update an agent profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Updates an agent profile. Each successful update appends a new immutable version; the\nprofile ID remains fixed and the store assigns the version.\n\n:::info Which fields change\nWithout an [`updateMask`](/api/agent-profiles/update-agent-profile#request-field-updatemask),\nonly the fields the supplied [`profile`](/api/agent-profiles/update-agent-profile#request-field-profile)\nsets change, and inside `generationConfig` only the sub-fields it sets. Nothing left out\nis cleared, so clearing a field needs a mask. A mask naming fields changes exactly those,\nclearing a named field the profile leaves unset; to replace the whole profile, name\nevery field. An update that would leave `name` or `whenToUse` empty is refused with\n`400`, as is one writing a system prompt that is not a valid template or variable specs\nwithout unique names.\n:::\n\n## Named request examples\n\n### agent-profiles-updateAgentProfile-request\n\nRename an existing profile without replacing its generation configuration.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\",\n  \"profile\": {\n    \"name\": \"Customer support assistant\"\n  },\n  \"updateMask\": \"name\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-03-request\n\nGuide request for Recipe: change the response style without replacing the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"profile\": {\n    \"generationConfig\": {\n      \"temperature\": 0.2\n    }\n  },\n  \"updateMask\": \"generationConfig.temperature\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-json-06-request\n\nGuide request for Retire an assistant without stranding its conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"profile\": {\n    \"enabled\": false\n  },\n  \"updateMask\": \"enabled\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-json-02-request\n\nGuide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"profile\": {\n    \"generationConfig\": {\n      \"systemPrompt\": \"{{template \\\"safety\\\" .}}\\n\\nYou are a nutrition coach for {{.userName}}.\"\n    }\n  },\n  \"updateMask\": \"generationConfig.systemPrompt\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/update",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "update"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profileId\": \"support-assistant\",\n  \"profile\": {\n    \"name\": \"Customer support assistant\"\n  },\n  \"updateMask\": \"name\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile updated; the new stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profile\": {\n    \"profileId\": \"example_123\",\n    \"name\": \"example\",\n    \"description\": \"example\",\n    \"whenToUse\": \"example\",\n    \"keywords\": [\n      \"example_123\"\n    ],\n    \"enabled\": true,\n    \"generationConfig\": {\n      \"model\": \"example\",\n      \"models\": [\n        \"example\"\n      ],\n      \"systemPrompt\": \"Example text\",\n      \"transforms\": [\n        \"example\"\n      ],\n      \"temperature\": 1,\n      \"topP\": 1,\n      \"maxOutputTokens\": 1,\n      \"frequencyPenalty\": 1,\n      \"presencePenalty\": 1,\n      \"stopSequences\": [\n        \"example\"\n      ],\n      \"seed\": \"1\",\n      \"allowParallelToolCalls\": true,\n      \"topK\": 1,\n      \"repetitionPenalty\": 1,\n      \"topLogprobs\": 1,\n      \"minP\": 1,\n      \"topA\": 1,\n      \"user\": \"example\",\n      \"modalities\": [\n        \"MODALITY_TEXT\"\n      ],\n      \"languagePreference\": \"en-US\",\n      \"requestTimeoutSeconds\": 1,\n      \"clearTools\": true\n    },\n    \"mcpServers\": [\n      {\n        \"serverId\": \"example_123\",\n        \"enabled\": true,\n        \"priority\": 1,\n        \"allowlistToolPatterns\": [\n          \"example\"\n        ],\n        \"blocklistToolPatterns\": [\n          \"example\"\n        ]\n      }\n    ],\n    \"variableSpecs\": [\n      {\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"required\": true,\n        \"defaultValue\": \"example\",\n        \"type\": \"VAR_TYPE_STRING\"\n      }\n    ],\n    \"version\": 1,\n    \"disableDefaultTools\": true\n  }\n}"
                }
              ]
            },
            {
              "name": "Delete an agent profile",
              "request": {
                "name": "Delete an agent profile",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the profile from the current library without checking whether conversations\nstill reference it. Resolve dependent conversations before deletion.\n\n- If it was the project's [`defaultProfileId`](/api/models/agent-profile-library#response-field-defaultprofileid),\n  that pointer is cleared.\n- Direct sends on conversations still naming it in [`activeProfileId`](/api/conversations/create-thread#request-field-activeprofileid)\n  fail with `ACTIVE_PROFILE_NOT_FOUND`. Select an enabled replacement or restore the\n  profile. A disabled replacement fails with `ACTIVE_PROFILE_DISABLED`. Queued\n  messages can fall back to defaults and log the problem; see\n  [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n- Historical version records remain. Their retention does not prove that every\n  dependent turn remains reproducible.\n\n## Named request examples\n\n### agent-profiles-deleteAgentProfile-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-07-request\n\nGuide request for Retire an assistant without stranding its conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/delete",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "delete"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-deleteAgentProfile-response",
                  "originalRequest": {
                    "name": "Delete an agent profile",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the profile from the current library without checking whether conversations\nstill reference it. Resolve dependent conversations before deletion.\n\n- If it was the project's [`defaultProfileId`](/api/models/agent-profile-library#response-field-defaultprofileid),\n  that pointer is cleared.\n- Direct sends on conversations still naming it in [`activeProfileId`](/api/conversations/create-thread#request-field-activeprofileid)\n  fail with `ACTIVE_PROFILE_NOT_FOUND`. Select an enabled replacement or restore the\n  profile. A disabled replacement fails with `ACTIVE_PROFILE_DISABLED`. Queued\n  messages can fall back to defaults and log the problem; see\n  [unusable profiles](/managed-agents/conversations/configuration#when-the-active-profile-cannot-be-used).\n- Historical version records remain. Their retention does not prove that every\n  dependent turn remains reproducible.\n\n## Named request examples\n\n### agent-profiles-deleteAgentProfile-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-07-request\n\nGuide request for Retire an assistant without stranding its conversations. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/delete",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "delete"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Profile deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            },
            {
              "name": "Get the profile library",
              "request": {
                "name": "Get the profile library",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the project's profile-selection library for building a picker. Its\nselection metadata omits runtime configuration; use\n[get](/api/agent-profiles/get-agent-profile) to inspect or edit a full profile.\nThis discovery projection neither proves that an autonomous router is active nor\nguarantees a measured cost or latency improvement.\n\nFor a native conversation, pass the chosen profile ID through `activeProfileId`\non thread creation or `setActiveProfileId` when sending a message; Travila loads its\nconfiguration. The returned `defaultProfileId` is not applied automatically when\n`activeProfileId` is empty. Your client must explicitly select its intended profile.\n\n## Named request examples\n\n### agent-profiles-getAgentProfileLibrary-request\n\nRead the enabled profile library in the authenticated project; no additional body fields are needed.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/library",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "library"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-getAgentProfileLibrary-response",
                  "originalRequest": {
                    "name": "Get the profile library",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the project's profile-selection library for building a picker. Its\nselection metadata omits runtime configuration; use\n[get](/api/agent-profiles/get-agent-profile) to inspect or edit a full profile.\nThis discovery projection neither proves that an autonomous router is active nor\nguarantees a measured cost or latency improvement.\n\nFor a native conversation, pass the chosen profile ID through `activeProfileId`\non thread creation or `setActiveProfileId` when sending a message; Travila loads its\nconfiguration. The returned `defaultProfileId` is not applied automatically when\n`activeProfileId` is empty. Your client must explicitly select its intended profile.\n\n## Named request examples\n\n### agent-profiles-getAgentProfileLibrary-request\n\nRead the enabled profile library in the authenticated project; no additional body fields are needed.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/library",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "library"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Selection metadata for the project",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"library\": {\n    \"profiles\": [\n      {\n        \"profileId\": \"example_123\",\n        \"name\": \"example\",\n        \"description\": \"example\",\n        \"whenToUse\": \"example\",\n        \"keywords\": [\n          \"example_123\"\n        ],\n        \"enabled\": true\n      }\n    ],\n    \"defaultProfileId\": \"example_123\"\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-index-json-04-response",
                  "originalRequest": {
                    "name": "Get the profile library",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the project's profile-selection library for building a picker. Its\nselection metadata omits runtime configuration; use\n[get](/api/agent-profiles/get-agent-profile) to inspect or edit a full profile.\nThis discovery projection neither proves that an autonomous router is active nor\nguarantees a measured cost or latency improvement.\n\nFor a native conversation, pass the chosen profile ID through `activeProfileId`\non thread creation or `setActiveProfileId` when sending a message; Travila loads its\nconfiguration. The returned `defaultProfileId` is not applied automatically when\n`activeProfileId` is empty. Your client must explicitly select its intended profile.\n\n## Named request examples\n\n### agent-profiles-getAgentProfileLibrary-request\n\nRead the enabled profile library in the authenticated project; no additional body fields are needed.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/library",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "library"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Selection metadata for the project",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"library\": {\n    \"profiles\": [\n      {\n        \"profileId\": \"nutrition_coach\",\n        \"name\": \"Nutrition Coach\",\n        \"description\": \"Food, meals and macros.\",\n        \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n        \"keywords\": [\n          \"nutrition\",\n          \"food\",\n          \"macros\"\n        ],\n        \"enabled\": true\n      }\n    ],\n    \"defaultProfileId\": \"generalist\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Versions",
          "description": {
            "content": "Read a profile's immutable version history and the fragment set behind a version.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List a profile's versions",
              "request": {
                "name": "List a profile's versions",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns stored profile versions newest first. Use a version with get to inspect that profile record. It does not establish what a past turn ran: actual fragment versions, resolved variables, renderer and effective generation settings must also be captured. A profile that never existed returns an empty list.\n\n## Named request examples\n\n### agent-profiles-listAgentProfileVersions-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-04-request\n\nGuide request for Recipe: investigate a change and restore earlier content. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/versions",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "versions"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-listAgentProfileVersions-response",
                  "originalRequest": {
                    "name": "List a profile's versions",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns stored profile versions newest first. Use a version with get to inspect that profile record. It does not establish what a past turn ran: actual fragment versions, resolved variables, renderer and effective generation settings must also be captured. A profile that never existed returns an empty list.\n\n## Named request examples\n\n### agent-profiles-listAgentProfileVersions-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-04-request\n\nGuide request for Recipe: investigate a change and restore earlier content. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/versions",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "versions"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Version history, descending",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"versions\": [\n    {\n      \"version\": 1,\n      \"createdAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ]\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-index-json-03-response",
                  "originalRequest": {
                    "name": "List a profile's versions",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns stored profile versions newest first. Use a version with get to inspect that profile record. It does not establish what a past turn ran: actual fragment versions, resolved variables, renderer and effective generation settings must also be captured. A profile that never existed returns an empty list.\n\n## Named request examples\n\n### agent-profiles-listAgentProfileVersions-request\n\nUse the profileId of an existing profile in your project.\n\n```json\n\n{\n  \"profileId\": \"support-assistant\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-04-request\n\nGuide request for Recipe: investigate a change and restore earlier content. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/versions",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "versions"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"profileId\": \"support-assistant\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Version history, descending",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"versions\": [\n    {\n      \"version\": 3,\n      \"createdAt\": \"2026-08-14T10:22:41Z\"\n    },\n    {\n      \"version\": 2,\n      \"createdAt\": \"2026-07-02T16:04:09Z\"\n    },\n    {\n      \"version\": 1,\n      \"createdAt\": \"2026-06-19T09:11:55Z\"\n    }\n  ]\n}"
                }
              ]
            },
            {
              "name": "Get a fragment set by version",
              "request": {
                "name": "Get a fragment set by version",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the fragments in a specified project-wide fragment-set version, ordered by fragment ID. Fragment writes advance the set version. A set version reconstructs that stored set, not a complete rendered turn. Current profile and fragment reads are independent and rendering can use the latest set; capture the set actually used alongside variables and effective configuration.\n\n## Named request examples\n\n### agent-profiles-getPromptFragmentSet-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"setVersion\": 1\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-05-request\n\nGuide request for Recover the text used before a change. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"setVersion\": 7\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/prompt-fragments/get-set",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "prompt-fragments",
                    "get-set"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"setVersion\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-getPromptFragmentSet-response",
                  "originalRequest": {
                    "name": "Get a fragment set by version",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the fragments in a specified project-wide fragment-set version, ordered by fragment ID. Fragment writes advance the set version. A set version reconstructs that stored set, not a complete rendered turn. Current profile and fragment reads are independent and rendering can use the latest set; capture the set actually used alongside variables and effective configuration.\n\n## Named request examples\n\n### agent-profiles-getPromptFragmentSet-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"setVersion\": 1\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-05-request\n\nGuide request for Recover the text used before a change. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"setVersion\": 7\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/get-set",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "get-set"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"setVersion\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragments at that set version",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"setVersion\": 1,\n  \"fragments\": [\n    {\n      \"fragmentId\": \"example_123\",\n      \"name\": \"example\",\n      \"content\": \"Example text\"\n    }\n  ]\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-04-response",
                  "originalRequest": {
                    "name": "Get a fragment set by version",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the fragments in a specified project-wide fragment-set version, ordered by fragment ID. Fragment writes advance the set version. A set version reconstructs that stored set, not a complete rendered turn. Current profile and fragment reads are independent and rendering can use the latest set; capture the set actually used alongside variables and effective configuration.\n\n## Named request examples\n\n### agent-profiles-getPromptFragmentSet-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"setVersion\": 1\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-05-request\n\nGuide request for Recover the text used before a change. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"setVersion\": 7\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/get-set",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "get-set"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"setVersion\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragments at that set version",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"setVersion\": 7,\n  \"fragments\": [\n    {\n      \"fragmentId\": \"safety\",\n      \"name\": \"Safety rules\",\n      \"content\": \"Never give medical advice. Refer the user to a clinician when asked.\"\n    }\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Prompt Fragments",
          "description": {
            "content": "Reusable template blocks shared across profiles.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a prompt fragment",
              "request": {
                "name": "Create a prompt fragment",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a reusable template block in the caller's project. The fragment ID must be\nunique within that project. Profiles that include the fragment share the stored\ntext, so a later edit affects every referencing profile.\n\n## Named request examples\n\n### agent-profiles-createPromptFragment-request\n\nCreate a reusable prompt fragment with a new fragmentId.\n\n```json\n\n{\n  \"fragment\": {\n    \"fragmentId\": \"answer-style\",\n    \"name\": \"Answer style\",\n    \"content\": \"Use short paragraphs and explain any assumptions.\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-01-request\n\nGuide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragment\": {\n    \"fragmentId\": \"safety\",\n    \"name\": \"Safety rules\",\n    \"content\": \"Never give medical advice. Refer the user to a clinician when asked.\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/prompt-fragments/create",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "prompt-fragments",
                    "create"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fragment\": {\n    \"fragmentId\": \"answer-style\",\n    \"name\": \"Answer style\",\n    \"content\": \"Use short paragraphs and explain any assumptions.\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-createPromptFragment-response",
                  "originalRequest": {
                    "name": "Create a prompt fragment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a reusable template block in the caller's project. The fragment ID must be\nunique within that project. Profiles that include the fragment share the stored\ntext, so a later edit affects every referencing profile.\n\n## Named request examples\n\n### agent-profiles-createPromptFragment-request\n\nCreate a reusable prompt fragment with a new fragmentId.\n\n```json\n\n{\n  \"fragment\": {\n    \"fragmentId\": \"answer-style\",\n    \"name\": \"Answer style\",\n    \"content\": \"Use short paragraphs and explain any assumptions.\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-01-request\n\nGuide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragment\": {\n    \"fragmentId\": \"safety\",\n    \"name\": \"Safety rules\",\n    \"content\": \"Never give medical advice. Refer the user to a clinician when asked.\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/create",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "create"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fragment\": {\n    \"fragmentId\": \"answer-style\",\n    \"name\": \"Answer style\",\n    \"content\": \"Use short paragraphs and explain any assumptions.\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragment created; the stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"fragment\": {\n    \"fragmentId\": \"example_123\",\n    \"name\": \"example\",\n    \"content\": \"Example text\"\n  }\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-01-response",
                  "originalRequest": {
                    "name": "Create a prompt fragment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a reusable template block in the caller's project. The fragment ID must be\nunique within that project. Profiles that include the fragment share the stored\ntext, so a later edit affects every referencing profile.\n\n## Named request examples\n\n### agent-profiles-createPromptFragment-request\n\nCreate a reusable prompt fragment with a new fragmentId.\n\n```json\n\n{\n  \"fragment\": {\n    \"fragmentId\": \"answer-style\",\n    \"name\": \"Answer style\",\n    \"content\": \"Use short paragraphs and explain any assumptions.\"\n  }\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-01-request\n\nGuide request for Step 1: Create the block and include it in the profile. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragment\": {\n    \"fragmentId\": \"safety\",\n    \"name\": \"Safety rules\",\n    \"content\": \"Never give medical advice. Refer the user to a clinician when asked.\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/create",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "create"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fragment\": {\n    \"fragmentId\": \"answer-style\",\n    \"name\": \"Answer style\",\n    \"content\": \"Use short paragraphs and explain any assumptions.\"\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragment created; the stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"fragment\": {\n    \"fragmentId\": \"safety\",\n    \"name\": \"Safety rules\",\n    \"content\": \"Never give medical advice. Refer the user to a clinician when asked.\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Get a prompt fragment",
              "request": {
                "name": "Get a prompt fragment",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns one fragment by id.\n\n## Named request examples\n\n### agent-profiles-getPromptFragment-request\n\nUse the fragmentId of an existing prompt fragment in your project.\n\n```json\n\n{\n  \"fragmentId\": \"answer-style\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-02-request\n\nGuide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragmentId\": \"safety\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/prompt-fragments/get",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "prompt-fragments",
                    "get"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fragmentId\": \"answer-style\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-getPromptFragment-response",
                  "originalRequest": {
                    "name": "Get a prompt fragment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns one fragment by id.\n\n## Named request examples\n\n### agent-profiles-getPromptFragment-request\n\nUse the fragmentId of an existing prompt fragment in your project.\n\n```json\n\n{\n  \"fragmentId\": \"answer-style\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-02-request\n\nGuide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragmentId\": \"safety\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/get",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "get"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fragmentId\": \"answer-style\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragment returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"fragment\": {\n    \"fragmentId\": \"example_123\",\n    \"name\": \"example\",\n    \"content\": \"Example text\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List prompt fragments",
              "request": {
                "name": "List prompt fragments",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the project's fragments, paginated, together with the current project-wide\nfragment-set version.\n\n## Named request examples\n\n### agent-profiles-listPromptFragments-request\n\nRead a bounded first page from the project library.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-03-request\n\nGuide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/prompt-fragments/list",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "prompt-fragments",
                    "list"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-listPromptFragments-response",
                  "originalRequest": {
                    "name": "List prompt fragments",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the project's fragments, paginated, together with the current project-wide\nfragment-set version.\n\n## Named request examples\n\n### agent-profiles-listPromptFragments-request\n\nRead a bounded first page from the project library.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-03-request\n\nGuide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/list",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "list"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Page of fragments",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"fragments\": [\n    {\n      \"fragmentId\": \"example_123\",\n      \"name\": \"example\",\n      \"content\": \"Example text\"\n    }\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": true,\n  \"setVersion\": 1\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-prompt-fragments-json-03-response",
                  "originalRequest": {
                    "name": "List prompt fragments",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the project's fragments, paginated, together with the current project-wide\nfragment-set version.\n\n## Named request examples\n\n### agent-profiles-listPromptFragments-request\n\nRead a bounded first page from the project library.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-03-request\n\nGuide request for Step 2: Check the sources and record their set version. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/list",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "list"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Page of fragments",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"fragments\": [\n    {\n      \"fragmentId\": \"safety\",\n      \"name\": \"Safety rules\",\n      \"content\": \"Never give medical advice. Refer the user to a clinician when asked.\"\n    }\n  ],\n  \"totalCount\": 1,\n  \"hasMore\": false,\n  \"setVersion\": 7\n}"
                }
              ]
            },
            {
              "name": "Update a prompt fragment",
              "request": {
                "name": "Update a prompt fragment",
                "description": {
                  "type": "text/markdown",
                  "content": "Partially updates a fragment via [`updateMask`](/api/agent-profiles/update-prompt-fragment#request-field-updatemask),\nusing the mask semantics of [profile update](/managed-agents/profiles-prompts#update-a-profile).\n\nThe change reaches every profile that includes this fragment on its next turn and\nincrements the project-wide fragment-set version. There is no per-profile rollout.\n\n## Named request examples\n\n### agent-profiles-updatePromptFragment-request\n\nReplace the content of an existing fragment, preserving its other fields.\n\n```json\n\n{\n  \"fragmentId\": \"answer-style\",\n  \"fragment\": {\n    \"content\": \"Use short paragraphs and include the next action.\"\n  },\n  \"updateMask\": \"content\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-04-request\n\nGuide request for Recipe: change shared wording across the assistants. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragmentId\": \"safety\",\n  \"fragment\": {\n    \"content\": \"Never give medical or dosage advice. Refer the user to a clinician.\"\n  },\n  \"updateMask\": \"content\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/prompt-fragments/update",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "prompt-fragments",
                    "update"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fragmentId\": \"answer-style\",\n  \"fragment\": {\n    \"content\": \"Use short paragraphs and include the next action.\"\n  },\n  \"updateMask\": \"content\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-updatePromptFragment-response",
                  "originalRequest": {
                    "name": "Update a prompt fragment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Partially updates a fragment via [`updateMask`](/api/agent-profiles/update-prompt-fragment#request-field-updatemask),\nusing the mask semantics of [profile update](/managed-agents/profiles-prompts#update-a-profile).\n\nThe change reaches every profile that includes this fragment on its next turn and\nincrements the project-wide fragment-set version. There is no per-profile rollout.\n\n## Named request examples\n\n### agent-profiles-updatePromptFragment-request\n\nReplace the content of an existing fragment, preserving its other fields.\n\n```json\n\n{\n  \"fragmentId\": \"answer-style\",\n  \"fragment\": {\n    \"content\": \"Use short paragraphs and include the next action.\"\n  },\n  \"updateMask\": \"content\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-04-request\n\nGuide request for Recipe: change shared wording across the assistants. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragmentId\": \"safety\",\n  \"fragment\": {\n    \"content\": \"Never give medical or dosage advice. Refer the user to a clinician.\"\n  },\n  \"updateMask\": \"content\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/update",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "update"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fragmentId\": \"answer-style\",\n  \"fragment\": {\n    \"content\": \"Use short paragraphs and include the next action.\"\n  },\n  \"updateMask\": \"content\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragment updated; the new stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"fragment\": {\n    \"fragmentId\": \"example_123\",\n    \"name\": \"example\",\n    \"content\": \"Example text\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Delete a prompt fragment",
              "request": {
                "name": "Delete a prompt fragment",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes a fragment from the current set. The renderer reports missing fragments and\nother reachable-template errors; its caller can then return the original prompt.\n\n:::warning Deleting does not rewrite the profiles that include it\nA missing fragment can leave the system prompt unrendered, so literal\n`{{template \"safety\" .}}` text reaches the model. Generation may continue with that\nraw template; this is not a validated or safe fallback, and a successful response\ndoes not prove that the intended instructions were rendered. Other failures can\nstill stop the turn.\n\nCheck dependencies before removal: page through all profiles and inspect their\n[`generationConfig.systemPrompt`](/api/models/generation-config#request-field-systemprompt)\nvalues, then check nested fragment includes too. Checking one page or only direct\nincludes can miss a dependent profile.\n:::\n\n## Named request examples\n\n### agent-profiles-deletePromptFragment-request\n\nUse the fragmentId of an existing prompt fragment in your project.\n\n```json\n\n{\n  \"fragmentId\": \"answer-style\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-06-request\n\nGuide request for Retire a shared block without leaving broken includes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragmentId\": \"safety\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/prompt-fragments/delete",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "prompt-fragments",
                    "delete"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"fragmentId\": \"answer-style\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-deletePromptFragment-response",
                  "originalRequest": {
                    "name": "Delete a prompt fragment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes a fragment from the current set. The renderer reports missing fragments and\nother reachable-template errors; its caller can then return the original prompt.\n\n:::warning Deleting does not rewrite the profiles that include it\nA missing fragment can leave the system prompt unrendered, so literal\n`{{template \"safety\" .}}` text reaches the model. Generation may continue with that\nraw template; this is not a validated or safe fallback, and a successful response\ndoes not prove that the intended instructions were rendered. Other failures can\nstill stop the turn.\n\nCheck dependencies before removal: page through all profiles and inspect their\n[`generationConfig.systemPrompt`](/api/models/generation-config#request-field-systemprompt)\nvalues, then check nested fragment includes too. Checking one page or only direct\nincludes can miss a dependent profile.\n:::\n\n## Named request examples\n\n### agent-profiles-deletePromptFragment-request\n\nUse the fragmentId of an existing prompt fragment in your project.\n\n```json\n\n{\n  \"fragmentId\": \"answer-style\"\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-prompt-fragments-06-request\n\nGuide request for Retire a shared block without leaving broken includes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"fragmentId\": \"safety\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/prompt-fragments/delete",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "prompt-fragments",
                        "delete"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"fragmentId\": \"answer-style\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Fragment deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Import",
          "description": {
            "content": "Bulk-convert an existing prompt library into profiles and fragments.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Import a prompt library",
              "request": {
                "name": "Import a prompt library",
                "description": {
                  "type": "text/markdown",
                  "content": "Bulk-converts a source prompt library into profiles and reusable fragments.\nConversion happens at import time: prompts are rewritten to the platform template\nsyntax and variable specifications are derived from usage. The platform never\ninterprets the source DSL when serving a turn.\n\nExisting rows cause the import to stop at the first conflict with `ALREADY_EXISTS`,\nunless overwrite is enabled. In overwrite mode, existing profiles and fragments\nare replaced. Writes apply fragments before profiles and are not atomic across\nrows: a later failure can leave earlier writes in place. Re-read the library and\nreconcile it before retrying.\n\n## Named request examples\n\n### agent-profiles-importAgentProfiles-request\n\nImport one source template as a new profile; use overwrite only when replacement is intended.\n\n```json\n\n{\n  \"templates\": [\n    {\n      \"profileId\": \"support-assistant\",\n      \"name\": \"Support assistant\",\n      \"whenToUse\": \"Help users answer product questions.\",\n      \"sourceDsl\": \"Answer clearly using the supplied product information.\"\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-08-request\n\nGuide request for Variant: migrate an existing prompt library. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"templates\": [\n    {\n      \"profileId\": \"nutrition_coach\",\n      \"name\": \"Nutrition Coach\",\n      \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n      \"keywords\": [\n        \"nutrition\"\n      ],\n      \"sourceDsl\": \"@include _shared/safety.txt\\n\\nYou are a nutrition coach for {{user_name}}.\",\n      \"generationConfig\": {\n        \"model\": \"YOUR_MODEL_ID\"\n      }\n    }\n  ],\n  \"fragments\": [\n    {\n      \"fragmentId\": \"safety\",\n      \"name\": \"Safety rules\",\n      \"path\": \"_shared/safety.txt\",\n      \"sourceDsl\": \"Never give medical advice.\"\n    }\n  ],\n  \"emitFragments\": true\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/agent-profiles/import",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "agent-profiles",
                    "import"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"templates\": [\n    {\n      \"profileId\": \"support-assistant\",\n      \"name\": \"Support assistant\",\n      \"whenToUse\": \"Help users answer product questions.\",\n      \"sourceDsl\": \"Answer clearly using the supplied product information.\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "agent-profiles-importAgentProfiles-response",
                  "originalRequest": {
                    "name": "Import a prompt library",
                    "description": {
                      "type": "text/markdown",
                      "content": "Bulk-converts a source prompt library into profiles and reusable fragments.\nConversion happens at import time: prompts are rewritten to the platform template\nsyntax and variable specifications are derived from usage. The platform never\ninterprets the source DSL when serving a turn.\n\nExisting rows cause the import to stop at the first conflict with `ALREADY_EXISTS`,\nunless overwrite is enabled. In overwrite mode, existing profiles and fragments\nare replaced. Writes apply fragments before profiles and are not atomic across\nrows: a later failure can leave earlier writes in place. Re-read the library and\nreconcile it before retrying.\n\n## Named request examples\n\n### agent-profiles-importAgentProfiles-request\n\nImport one source template as a new profile; use overwrite only when replacement is intended.\n\n```json\n\n{\n  \"templates\": [\n    {\n      \"profileId\": \"support-assistant\",\n      \"name\": \"Support assistant\",\n      \"whenToUse\": \"Help users answer product questions.\",\n      \"sourceDsl\": \"Answer clearly using the supplied product information.\"\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-08-request\n\nGuide request for Variant: migrate an existing prompt library. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"templates\": [\n    {\n      \"profileId\": \"nutrition_coach\",\n      \"name\": \"Nutrition Coach\",\n      \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n      \"keywords\": [\n        \"nutrition\"\n      ],\n      \"sourceDsl\": \"@include _shared/safety.txt\\n\\nYou are a nutrition coach for {{user_name}}.\",\n      \"generationConfig\": {\n        \"model\": \"YOUR_MODEL_ID\"\n      }\n    }\n  ],\n  \"fragments\": [\n    {\n      \"fragmentId\": \"safety\",\n      \"name\": \"Safety rules\",\n      \"path\": \"_shared/safety.txt\",\n      \"sourceDsl\": \"Never give medical advice.\"\n    }\n  ],\n  \"emitFragments\": true\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/import",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "import"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"templates\": [\n    {\n      \"profileId\": \"support-assistant\",\n      \"name\": \"Support assistant\",\n      \"whenToUse\": \"Help users answer product questions.\",\n      \"sourceDsl\": \"Answer clearly using the supplied product information.\"\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Converted profiles and fragments, as stored",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profiles\": [\n    {\n      \"profileId\": \"example_123\",\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"whenToUse\": \"example\",\n      \"keywords\": [\n        \"example_123\"\n      ],\n      \"enabled\": true,\n      \"generationConfig\": {\n        \"model\": \"example\",\n        \"models\": [\n          \"example\"\n        ],\n        \"systemPrompt\": \"Example text\",\n        \"transforms\": [\n          \"example\"\n        ],\n        \"temperature\": 1,\n        \"topP\": 1,\n        \"maxOutputTokens\": 1,\n        \"frequencyPenalty\": 1,\n        \"presencePenalty\": 1,\n        \"stopSequences\": [\n          \"example\"\n        ],\n        \"seed\": \"1\",\n        \"allowParallelToolCalls\": true,\n        \"topK\": 1,\n        \"repetitionPenalty\": 1,\n        \"topLogprobs\": 1,\n        \"minP\": 1,\n        \"topA\": 1,\n        \"user\": \"example\",\n        \"modalities\": [\n          \"MODALITY_TEXT\"\n        ],\n        \"languagePreference\": \"en-US\",\n        \"requestTimeoutSeconds\": 1,\n        \"clearTools\": true\n      },\n      \"mcpServers\": [\n        {\n          \"serverId\": \"example_123\",\n          \"enabled\": true,\n          \"priority\": 1,\n          \"allowlistToolPatterns\": [\n            \"example\"\n          ],\n          \"blocklistToolPatterns\": [\n            \"example\"\n          ]\n        }\n      ],\n      \"variableSpecs\": [\n        {\n          \"name\": \"example\",\n          \"description\": \"example\",\n          \"required\": true,\n          \"defaultValue\": \"example\",\n          \"type\": \"VAR_TYPE_STRING\"\n        }\n      ],\n      \"version\": 1,\n      \"disableDefaultTools\": true\n    }\n  ],\n  \"fragments\": [\n    {\n      \"fragmentId\": \"example_123\",\n      \"name\": \"example\",\n      \"content\": \"Example text\"\n    }\n  ]\n}"
                },
                {
                  "name": "cookbook-managed-agents-profiles-prompts-index-json-07-response",
                  "originalRequest": {
                    "name": "Import a prompt library",
                    "description": {
                      "type": "text/markdown",
                      "content": "Bulk-converts a source prompt library into profiles and reusable fragments.\nConversion happens at import time: prompts are rewritten to the platform template\nsyntax and variable specifications are derived from usage. The platform never\ninterprets the source DSL when serving a turn.\n\nExisting rows cause the import to stop at the first conflict with `ALREADY_EXISTS`,\nunless overwrite is enabled. In overwrite mode, existing profiles and fragments\nare replaced. Writes apply fragments before profiles and are not atomic across\nrows: a later failure can leave earlier writes in place. Re-read the library and\nreconcile it before retrying.\n\n## Named request examples\n\n### agent-profiles-importAgentProfiles-request\n\nImport one source template as a new profile; use overwrite only when replacement is intended.\n\n```json\n\n{\n  \"templates\": [\n    {\n      \"profileId\": \"support-assistant\",\n      \"name\": \"Support assistant\",\n      \"whenToUse\": \"Help users answer product questions.\",\n      \"sourceDsl\": \"Answer clearly using the supplied product information.\"\n    }\n  ]\n}\n\n```\n\n### cookbook-managed-agents-profiles-prompts-index-08-request\n\nGuide request for Variant: migrate an existing prompt library. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"templates\": [\n    {\n      \"profileId\": \"nutrition_coach\",\n      \"name\": \"Nutrition Coach\",\n      \"whenToUse\": \"Use when the user asks about food, meals, or macros.\",\n      \"keywords\": [\n        \"nutrition\"\n      ],\n      \"sourceDsl\": \"@include _shared/safety.txt\\n\\nYou are a nutrition coach for {{user_name}}.\",\n      \"generationConfig\": {\n        \"model\": \"YOUR_MODEL_ID\"\n      }\n    }\n  ],\n  \"fragments\": [\n    {\n      \"fragmentId\": \"safety\",\n      \"name\": \"Safety rules\",\n      \"path\": \"_shared/safety.txt\",\n      \"sourceDsl\": \"Never give medical advice.\"\n    }\n  ],\n  \"emitFragments\": true\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/agent-profiles/import",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "agent-profiles",
                        "import"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"templates\": [\n    {\n      \"profileId\": \"support-assistant\",\n      \"name\": \"Support assistant\",\n      \"whenToUse\": \"Help users answer product questions.\",\n      \"sourceDsl\": \"Answer clearly using the supplied product information.\"\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Converted profiles and fragments, as stored",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"profiles\": [\n    {\n      \"profileId\": \"nutrition_coach\",\n      \"version\": 1\n    }\n  ],\n  \"fragments\": [\n    {\n      \"fragmentId\": \"safety\",\n      \"name\": \"Safety rules\"\n    }\n  ]\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Custom MCP Server APIs",
      "description": "Register custom MCP servers, update their configuration and test discovery. Configuration and discovery do not grant permission to perform a tool action or imply automatic insertion into every agent.\n\nUse an authorized backend `sk_…` key in `X-API-Key`; these configuration operations do not need an end-user identity. A console JWT belongs to the separate console surface. See [Authentication](/core-platform/identity-access/authentication).\n\n<span id=\"scoping\"></span>\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` are not an authorization mechanism. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\n<span id=\"credentials\"></span>\n\nServer endpoints, query parameters and secret bindings are sensitive connection configuration. Use approved network destinations and the secret store; never place credentials in shared examples.\n\n**Related guide:** [Custom MCP servers](/integrations/tools-connections/custom-mcp-servers)\n\n<span id=\"field-naming\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Servers",
          "description": {
            "content": "Register, read, update, and delete custom MCP servers.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Register a custom MCP server",
              "request": {
                "name": "Register a custom MCP server",
                "description": {
                  "type": "text/markdown",
                  "content": "Registers an HTTP MCP server in the caller's project. A duplicate server ID fails\nwith `409`; use [update](/api/mcp-servers/update-custom-mcp-server) to replace the\nrecord.\n\nConfiguration validation and the egress guard run before storage. Invalid\nconfiguration, a referenced secret absent from this project, or an attempt to\ncreate at the configured project limit (20 servers by default) returns `400`.\nConcurrent creates can exceed this count-before-create limit. Secret existence\nis checked at write time so a missing credential is reported before the first\ntool call. Endpoint restrictions also apply when connecting; an HTTPS URL alone\ndoes not establish a safe destination.\n\n## Named request examples\n\n### mcp-servers-createCustomMcpServer-request\n\nRegister an enabled server without authentication; replace the example endpoint with your reachable MCP endpoint.\n\n```json\n\n{\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-02-request\n\nGuide request for 2. Register the service you want Travila to call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"server\": {\n    \"serverId\": \"firecrawl\",\n    \"displayName\": \"Firecrawl\",\n    \"description\": \"BYO web scraping MCP\",\n    \"endpoint\": \"https://mcp.firecrawl.dev/v2/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER\",\n    \"authSecretRef\": {\n      \"name\": \"firecrawl-api-key\"\n    },\n    \"enabled\": true,\n    \"requestTimeout\": \"30s\"\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/mcp-servers/create",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "mcp-servers",
                    "create"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "mcp-servers-createCustomMcpServer-response",
                  "originalRequest": {
                    "name": "Register a custom MCP server",
                    "description": {
                      "type": "text/markdown",
                      "content": "Registers an HTTP MCP server in the caller's project. A duplicate server ID fails\nwith `409`; use [update](/api/mcp-servers/update-custom-mcp-server) to replace the\nrecord.\n\nConfiguration validation and the egress guard run before storage. Invalid\nconfiguration, a referenced secret absent from this project, or an attempt to\ncreate at the configured project limit (20 servers by default) returns `400`.\nConcurrent creates can exceed this count-before-create limit. Secret existence\nis checked at write time so a missing credential is reported before the first\ntool call. Endpoint restrictions also apply when connecting; an HTTPS URL alone\ndoes not establish a safe destination.\n\n## Named request examples\n\n### mcp-servers-createCustomMcpServer-request\n\nRegister an enabled server without authentication; replace the example endpoint with your reachable MCP endpoint.\n\n```json\n\n{\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-02-request\n\nGuide request for 2. Register the service you want Travila to call. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"server\": {\n    \"serverId\": \"firecrawl\",\n    \"displayName\": \"Firecrawl\",\n    \"description\": \"BYO web scraping MCP\",\n    \"endpoint\": \"https://mcp.firecrawl.dev/v2/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_BEARER\",\n    \"authSecretRef\": {\n      \"name\": \"firecrawl-api-key\"\n    },\n    \"enabled\": true,\n    \"requestTimeout\": \"30s\"\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/create",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "create"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Server registered; the stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"server\": {\n    \"serverId\": \"example-id\",\n    \"displayName\": \"example\",\n    \"description\": \"example\",\n    \"endpoint\": \"https://example.com/callback\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true,\n    \"requestTimeout\": \"1s\",\n    \"version\": \"1\",\n    \"createdBy\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Get a custom MCP server",
              "request": {
                "name": "Get a custom MCP server",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns one server record, including disabled ones. An unknown server ID returns\n`404`. The response does not expose the referenced credential's value.\n\n## Named request examples\n\n### mcp-servers-getCustomMcpServer-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/mcp-servers/get",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "mcp-servers",
                    "get"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "mcp-servers-getCustomMcpServer-response",
                  "originalRequest": {
                    "name": "Get a custom MCP server",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns one server record, including disabled ones. An unknown server ID returns\n`404`. The response does not expose the referenced credential's value.\n\n## Named request examples\n\n### mcp-servers-getCustomMcpServer-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/get",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "get"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Server returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"server\": {\n    \"serverId\": \"example-id\",\n    \"displayName\": \"example\",\n    \"description\": \"example\",\n    \"endpoint\": \"https://example.com/callback\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true,\n    \"requestTimeout\": \"1s\",\n    \"version\": \"1\",\n    \"createdBy\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List custom MCP servers",
              "request": {
                "name": "List custom MCP servers",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the project's matching custom servers without pagination. Use the secret\nname filter to inspect dependencies before rotating or deleting a credential.\n\n## Named request examples\n\n### mcp-servers-listCustomMcpServers-request\n\nList enabled custom MCP servers in the authenticated project.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/mcp-servers/list",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "mcp-servers",
                    "list"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "mcp-servers-listCustomMcpServers-response",
                  "originalRequest": {
                    "name": "List custom MCP servers",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the project's matching custom servers without pagination. Use the secret\nname filter to inspect dependencies before rotating or deleting a credential.\n\n## Named request examples\n\n### mcp-servers-listCustomMcpServers-request\n\nList enabled custom MCP servers in the authenticated project.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/list",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "list"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "The project's servers",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"servers\": [\n    {\n      \"serverId\": \"example-id\",\n      \"displayName\": \"example\",\n      \"description\": \"example\",\n      \"endpoint\": \"https://example.com/callback\",\n      \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n      \"enabled\": true,\n      \"requestTimeout\": \"1s\",\n      \"version\": \"1\",\n      \"createdBy\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"total\": 1\n}"
                }
              ]
            },
            {
              "name": "Update a custom MCP server",
              "request": {
                "name": "Update a custom MCP server",
                "description": {
                  "type": "text/markdown",
                  "content": "Replaces the mutable server configuration and increments its version. Read the\nsaved record, edit the intended fields and submit the complete desired server:\nomitting [`enabled`](/api/models/custom-mcp-server#request-field-enabled) disables it,\nand omitted optional fields are cleared. The top-level `serverId` selects the\nrecord; an update cannot rename it. There is no revision precondition, so concurrent\nstale updates can overwrite one another.\n\nA saved update does not confirm that every subsequent call has switched to the\nnew configuration, and it does not cancel in-flight calls. Use `get` to inspect the\nsaved record and `test-connection` to check a connection using it. The same\nvalidation as create applies; an unknown server returns `404`.\n\n## Named request examples\n\n### mcp-servers-updateCustomMcpServer-request\n\nReplace an existing server configuration; preserve the intended authentication and enabled settings.\n\n```json\n\n{\n  \"serverId\": \"product-tools\",\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/mcp-servers/update",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "mcp-servers",
                    "update"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"product-tools\",\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "mcp-servers-updateCustomMcpServer-response",
                  "originalRequest": {
                    "name": "Update a custom MCP server",
                    "description": {
                      "type": "text/markdown",
                      "content": "Replaces the mutable server configuration and increments its version. Read the\nsaved record, edit the intended fields and submit the complete desired server:\nomitting [`enabled`](/api/models/custom-mcp-server#request-field-enabled) disables it,\nand omitted optional fields are cleared. The top-level `serverId` selects the\nrecord; an update cannot rename it. There is no revision precondition, so concurrent\nstale updates can overwrite one another.\n\nA saved update does not confirm that every subsequent call has switched to the\nnew configuration, and it does not cancel in-flight calls. Use `get` to inspect the\nsaved record and `test-connection` to check a connection using it. The same\nvalidation as create applies; an unknown server returns `404`.\n\n## Named request examples\n\n### mcp-servers-updateCustomMcpServer-request\n\nReplace an existing server configuration; preserve the intended authentication and enabled settings.\n\n```json\n\n{\n  \"serverId\": \"product-tools\",\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/update",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "update"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"product-tools\",\n  \"server\": {\n    \"serverId\": \"product-tools\",\n    \"displayName\": \"Product tools\",\n    \"endpoint\": \"https://mcp.example.com/mcp\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true\n  }\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Server updated; the stored record is echoed back",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"server\": {\n    \"serverId\": \"example-id\",\n    \"displayName\": \"example\",\n    \"description\": \"example\",\n    \"endpoint\": \"https://example.com/callback\",\n    \"authType\": \"CUSTOM_MCP_SERVER_AUTH_TYPE_NONE\",\n    \"enabled\": true,\n    \"requestTimeout\": \"1s\",\n    \"version\": \"1\",\n    \"createdBy\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Delete a custom MCP server",
              "request": {
                "name": "Delete a custom MCP server",
                "description": {
                  "type": "text/markdown",
                  "content": "Removes the server record. Deleting an absent server succeeds with `deleted: false`.\nConversations and profiles retain references to the deleted ID, so remove those\nreferences separately. New resolution fails once deletion is observed; in-flight\ncalls and previously loaded definitions are not recalled. The referenced secret\nis left in place.\n\nTo retain the configuration while disabling the server, set `enabled: false`\nthrough [update](/api/mcp-servers/update-custom-mcp-server).\n\n## Named request examples\n\n### mcp-servers-deleteCustomMcpServer-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/mcp-servers/delete",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "mcp-servers",
                    "delete"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "mcp-servers-deleteCustomMcpServer-response",
                  "originalRequest": {
                    "name": "Delete a custom MCP server",
                    "description": {
                      "type": "text/markdown",
                      "content": "Removes the server record. Deleting an absent server succeeds with `deleted: false`.\nConversations and profiles retain references to the deleted ID, so remove those\nreferences separately. New resolution fails once deletion is observed; in-flight\ncalls and previously loaded definitions are not recalled. The referenced secret\nis left in place.\n\nTo retain the configuration while disabling the server, set `enabled: false`\nthrough [update](/api/mcp-servers/update-custom-mcp-server).\n\n## Named request examples\n\n### mcp-servers-deleteCustomMcpServer-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/delete",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "delete"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Delete processed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Diagnostics",
          "description": {
            "content": "Test a registered server’s connection and tool discovery.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Test a custom MCP server connection",
              "request": {
                "name": "Test a custom MCP server connection",
                "description": {
                  "type": "text/markdown",
                  "content": "Reads a stored configuration snapshot, performs the MCP handshake/tool listing and\nreturns the observed count and latency. A concurrent update can change the record\nafter that read. This operation reads the stored definition directly, making it\nuseful after a configuration change.\n\nCheck [`success`](/api/mcp-servers/test-custom-mcp-server-connection#response-field-success)\nis `true`; a connection failure can return HTTP 200 with `success` false or omitted\nand an error. Inspect the error and repair the endpoint, authentication or network\naccess before retrying. Authentication, validation, rate limiting and infrastructure\nfailures can also return non-success HTTP responses.\n\nTests are limited to 10 per minute per project; destination restrictions apply\nwhen connecting. Rate limiting does not replace network isolation or authorization.\nA successful test is a point-in-time connection check, not a guarantee that every\nadvertised tool is safe or available.\n\n## Named request examples\n\n### mcp-servers-testCustomMcpServerConnection-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-03-request\n\nGuide request for 3. Check the saved connection and choose its tools. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"serverId\": \"firecrawl\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/mcp-servers/test-connection",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "mcp-servers",
                    "test-connection"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "mcp-servers-testCustomMcpServerConnection-response",
                  "originalRequest": {
                    "name": "Test a custom MCP server connection",
                    "description": {
                      "type": "text/markdown",
                      "content": "Reads a stored configuration snapshot, performs the MCP handshake/tool listing and\nreturns the observed count and latency. A concurrent update can change the record\nafter that read. This operation reads the stored definition directly, making it\nuseful after a configuration change.\n\nCheck [`success`](/api/mcp-servers/test-custom-mcp-server-connection#response-field-success)\nis `true`; a connection failure can return HTTP 200 with `success` false or omitted\nand an error. Inspect the error and repair the endpoint, authentication or network\naccess before retrying. Authentication, validation, rate limiting and infrastructure\nfailures can also return non-success HTTP responses.\n\nTests are limited to 10 per minute per project; destination restrictions apply\nwhen connecting. Rate limiting does not replace network isolation or authorization.\nA successful test is a point-in-time connection check, not a guarantee that every\nadvertised tool is safe or available.\n\n## Named request examples\n\n### mcp-servers-testCustomMcpServerConnection-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-03-request\n\nGuide request for 3. Check the saved connection and choose its tools. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"serverId\": \"firecrawl\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/test-connection",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "test-connection"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "The test ran; read `success` for the outcome",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"success\": true,\n  \"toolCount\": 1,\n  \"latencyMs\": \"1\",\n  \"error\": \"example\"\n}"
                },
                {
                  "name": "cookbook-integrations-tools-connections-custom-mcp-servers-json-01-response",
                  "originalRequest": {
                    "name": "Test a custom MCP server connection",
                    "description": {
                      "type": "text/markdown",
                      "content": "Reads a stored configuration snapshot, performs the MCP handshake/tool listing and\nreturns the observed count and latency. A concurrent update can change the record\nafter that read. This operation reads the stored definition directly, making it\nuseful after a configuration change.\n\nCheck [`success`](/api/mcp-servers/test-custom-mcp-server-connection#response-field-success)\nis `true`; a connection failure can return HTTP 200 with `success` false or omitted\nand an error. Inspect the error and repair the endpoint, authentication or network\naccess before retrying. Authentication, validation, rate limiting and infrastructure\nfailures can also return non-success HTTP responses.\n\nTests are limited to 10 per minute per project; destination restrictions apply\nwhen connecting. Rate limiting does not replace network isolation or authorization.\nA successful test is a point-in-time connection check, not a guarantee that every\nadvertised tool is safe or available.\n\n## Named request examples\n\n### mcp-servers-testCustomMcpServerConnection-request\n\nUse the unprefixed serverId of a custom server registered in your project.\n\n```json\n\n{\n  \"serverId\": \"product-tools\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-03-request\n\nGuide request for 3. Check the saved connection and choose its tools. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"serverId\": \"firecrawl\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/mcp-servers/test-connection",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "mcp-servers",
                        "test-connection"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"serverId\": \"product-tools\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "The test ran; read `success` for the outcome",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"success\": true,\n  \"toolCount\": 26,\n  \"latencyMs\": \"556\"\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Project Secret APIs",
      "description": "Write credentials and inspect their metadata and known references. There is no public endpoint to retrieve a stored secret value. Backend consumers resolve bindings when they use a credential.\n\nUse an authorized backend `sk_…` key in `X-API-Key`; these configuration operations do not need an end-user identity. A console JWT belongs to the separate console surface. See [Authentication](/core-platform/identity-access/authentication).\n\n<span id=\"scoping\"></span>\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\n<span id=\"rotation\"></span>\n\nThis API lacks complete per-action secret permissions. Restrict access to the key-management and secrets-management surfaces. Public write-only behavior does not prove that values are absent from internal storage, journals or diagnostics. A failed write can leave the credential and its metadata inconsistent. Stop using the affected binding and ask your Travila operator to resolve its state before retrying; metadata alone cannot confirm which value is stored.\n\n**Related guide:** [Store and rotate credentials](/core-platform/secrets)\n\n<span id=\"field-naming\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Secrets",
          "description": {
            "content": "Write, inspect, list, and delete project secrets.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create or update a secret",
              "request": {
                "name": "Create or update a secret",
                "description": {
                  "type": "text/markdown",
                  "content": "Writes or replaces a value under `name`; this upsert also rotates the stored credential. The response contains metadata only, and no public read endpoint returns the value. Name-based bindings remain the same, but consumers can retain prior values in caches or in-flight work; this is not upstream credential revocation.\n\nValue storage and metadata updates are separate steps. On an error, metadata alone cannot confirm which value is current. Stop using the affected binding and contact your Travila operator before retrying.\n\n## Named request examples\n\n### secrets-putSecret-request\n\nStore an example-named provider credential; replace the placeholder with the value to store.\n\n```json\n\n{\n  \"name\": \"travel-provider-api-key\",\n  \"value\": \"replace-with-provider-api-key\",\n  \"description\": \"API key for the travel provider\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-01-request\n\nGuide request for 1. Store the Firecrawl credential. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"firecrawl-api-key\",\n  \"value\": \"fc-your-token-here\",\n  \"description\": \"Firecrawl bearer token\",\n  \"labels\": {\n    \"kind\": \"mcp-auth\"\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-06-request\n\nGuide request for Rotate the credential. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"firecrawl-api-key\",\n  \"value\": \"fc-the-new-token\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/secrets/put",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "secrets",
                    "put"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"travel-provider-api-key\",\n  \"value\": \"replace-with-provider-api-key\",\n  \"description\": \"API key for the travel provider\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "secrets-putSecret-response",
                  "originalRequest": {
                    "name": "Create or update a secret",
                    "description": {
                      "type": "text/markdown",
                      "content": "Writes or replaces a value under `name`; this upsert also rotates the stored credential. The response contains metadata only, and no public read endpoint returns the value. Name-based bindings remain the same, but consumers can retain prior values in caches or in-flight work; this is not upstream credential revocation.\n\nValue storage and metadata updates are separate steps. On an error, metadata alone cannot confirm which value is current. Stop using the affected binding and contact your Travila operator before retrying.\n\n## Named request examples\n\n### secrets-putSecret-request\n\nStore an example-named provider credential; replace the placeholder with the value to store.\n\n```json\n\n{\n  \"name\": \"travel-provider-api-key\",\n  \"value\": \"replace-with-provider-api-key\",\n  \"description\": \"API key for the travel provider\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-01-request\n\nGuide request for 1. Store the Firecrawl credential. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"firecrawl-api-key\",\n  \"value\": \"fc-your-token-here\",\n  \"description\": \"Firecrawl bearer token\",\n  \"labels\": {\n    \"kind\": \"mcp-auth\"\n  }\n}\n\n```\n\n### cookbook-integrations-tools-connections-custom-mcp-servers-06-request\n\nGuide request for Rotate the credential. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"firecrawl-api-key\",\n  \"value\": \"fc-the-new-token\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/secrets/put",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "secrets",
                        "put"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"travel-provider-api-key\",\n  \"value\": \"replace-with-provider-api-key\",\n  \"description\": \"API key for the travel provider\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Secret written; metadata only",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"metadata\": {\n    \"name\": \"example\",\n    \"projectId\": \"example_123\",\n    \"description\": \"example\",\n    \"labels\": {},\n    \"version\": \"1\",\n    \"createdBy\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Get a secret's metadata",
              "request": {
                "name": "Get a secret's metadata",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns the secret’s metadata without exposing the credential. Unknown names return 404. The metadata revision records that row; after a partially failed write it is not independent proof of the actual stored credential version.\n\n## Named request examples\n\n### secrets-getSecretMetadata-request\n\nUse the name of an existing secret in the authenticated project.\n\n```json\n\n{\n  \"name\": \"travel-provider-api-key\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/secrets/get-metadata",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "secrets",
                    "get-metadata"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"travel-provider-api-key\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "secrets-getSecretMetadata-response",
                  "originalRequest": {
                    "name": "Get a secret's metadata",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns the secret’s metadata without exposing the credential. Unknown names return 404. The metadata revision records that row; after a partially failed write it is not independent proof of the actual stored credential version.\n\n## Named request examples\n\n### secrets-getSecretMetadata-request\n\nUse the name of an existing secret in the authenticated project.\n\n```json\n\n{\n  \"name\": \"travel-provider-api-key\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/secrets/get-metadata",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "secrets",
                        "get-metadata"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"travel-provider-api-key\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Metadata returned",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"metadata\": {\n    \"name\": \"example\",\n    \"projectId\": \"example_123\",\n    \"description\": \"example\",\n    \"labels\": {},\n    \"version\": \"1\",\n    \"createdBy\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List secrets",
              "request": {
                "name": "List secrets",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns metadata for every secret in the project, paginated. Values are not\nincluded, and there is no parameter that would include them.\n\nSend `{}` for the first page at the server's default size.\n\n\n## Named request examples\n\n### secrets-listSecrets-request\n\nList the first page of secret metadata for the authenticated project.\n\n```json\n\n{\n  \"page\": 0,\n  \"pageSize\": 20\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/secrets/list",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "secrets",
                    "list"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"page\": 0,\n  \"pageSize\": 20\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "secrets-listSecrets-response",
                  "originalRequest": {
                    "name": "List secrets",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns metadata for every secret in the project, paginated. Values are not\nincluded, and there is no parameter that would include them.\n\nSend `{}` for the first page at the server's default size.\n\n\n## Named request examples\n\n### secrets-listSecrets-request\n\nList the first page of secret metadata for the authenticated project.\n\n```json\n\n{\n  \"page\": 0,\n  \"pageSize\": 20\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/secrets/list",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "secrets",
                        "list"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"page\": 0,\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Page of secret metadata",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"secrets\": [\n    {\n      \"name\": \"example\",\n      \"projectId\": \"example_123\",\n      \"description\": \"example\",\n      \"labels\": {},\n      \"version\": \"1\",\n      \"createdBy\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"total\": 1\n}"
                }
              ]
            },
            {
              "name": "Delete a secret",
              "request": {
                "name": "Delete a secret",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes the stored value before its metadata. An absent secret is an idempotent success with `deleted` false, which may be omitted. A failure does not prove the previous value remains intact.\n\nKnown custom MCP references block deletion with 409 unless `force` is used. Detach or rebind those consumers first where possible. The reference list covers tracked custom servers, not every possible external consumer. Forced deletion can break future credential resolution; it does not recall cached or already dispatched use, revoke the credential at its issuer, or attest to backup erasure.\n\n## Named request examples\n\n### secrets-deleteSecret-request\n\nUse the name of an existing secret in the authenticated project.\n\n```json\n\n{\n  \"name\": \"travel-provider-api-key\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/secrets/delete",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "secrets",
                    "delete"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"travel-provider-api-key\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "secrets-deleteSecret-response",
                  "originalRequest": {
                    "name": "Delete a secret",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes the stored value before its metadata. An absent secret is an idempotent success with `deleted` false, which may be omitted. A failure does not prove the previous value remains intact.\n\nKnown custom MCP references block deletion with 409 unless `force` is used. Detach or rebind those consumers first where possible. The reference list covers tracked custom servers, not every possible external consumer. Forced deletion can break future credential resolution; it does not recall cached or already dispatched use, revoke the credential at its issuer, or attest to backup erasure.\n\n## Named request examples\n\n### secrets-deleteSecret-request\n\nUse the name of an existing secret in the authenticated project.\n\n```json\n\n{\n  \"name\": \"travel-provider-api-key\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/secrets/delete",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "secrets",
                        "delete"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"travel-provider-api-key\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Delete processed",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Eval APIs",
      "description": "Read traces and scores, curate datasets, and register evaluation runs. These are evaluation and observability operations.\n\nUse an authorized backend `sk_…` key in `X-API-Key`; most evaluation operations do not need an end-user identity; record-score requires an attributable verified subject. A console JWT belongs to the separate console surface. See [Authentication](/core-platform/identity-access/authentication).\n\n### Projects\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` do not grant authority. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nUser IDs in read filters identify evaluated subjects; they do not assert the caller’s identity. Machine credentials do not establish a human reviewer. Reviewer attribution is taken from trusted caller context when available. HTTP 424 means evaluation is not provisioned for the selected scope. Contact your Travila operator; repeating the same request will not provision it.\n\n### Current API limits {#current-adapter-limits}\n\n`record-score` currently maps numeric and boolean values and sends the resolved target as a trace ID. Categorical/text and observation/session/dataset-run scoring are not faithfully implemented despite their schema enum values. `delete-score` does not currently enforce per-author ownership. Restrict this API to trusted evaluation operators until those controls are qualified. Run registration does not execute a dataset or validate gold-answer eligibility.\n\n### Pagination\n\nCursor lists are list-traces, list-observations, list-scores, list-sessions and list-dataset-runs. Send pageSize, then the exact returned cursorPage.nextCursor as cursor. Continue after a short or empty page when that cursor is present. Other lists use one-based page/pageSize. Only trace lists can return an optional exact total; an unavailable total is not zero. Keep the same scope, filters and time window across pages. Old traces can lack entity tags.\n\n### Reading responses\n\n`contentRedacted: true` reports redaction, while its absence is not proof that content is verbatim or free of sensitive information.\n\n**Related guide:** [Measure and improve quality](/insights/evaluation)\n\n### Field naming\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n\n\nThese examples use cursor pagination where indicated. Older API versions can use page numbers. Match your client to the API available to your account. See record-dataset-run for limitations on associating traces after they have been recorded.",
      "item": [
        {
          "name": "Traces",
          "description": {
            "content": "Read the trace an LLM turn produced, and the observations inside it.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get a trace",
              "request": {
                "name": "Get a trace",
                "description": {
                  "type": "text/markdown",
                  "content": "Fetch one trace with its observations expanded.\n\nWhen addressing a turn, `conversationId` accepts a bare thread id and is\nqualified with your verified tenant. The assistant message or rating event\ncarries the source user-message identity needed to find that turn.\n\nObservation/score expansion is capped at 20 upstream pages of 100 without a partial-result flag; large detail responses do not establish a complete evaluation cohort. If the expected step is missing, continue with [observation search](/insights/evaluation/reading#observations-across-traces) rather than claiming the turn ended there.\n\n## Named request examples\n\n### evals-getTrace-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"traceId\": \"trace_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-reading-02-request\n\nGuide request for Locate the slow or failed step. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationId\": \"conv_123\",\n  \"sourceUserMessageId\": \"msg_abc\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/get-trace",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "get-trace"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"traceId\": \"trace_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-getTrace-response",
                  "originalRequest": {
                    "name": "Get a trace",
                    "description": {
                      "type": "text/markdown",
                      "content": "Fetch one trace with its observations expanded.\n\nWhen addressing a turn, `conversationId` accepts a bare thread id and is\nqualified with your verified tenant. The assistant message or rating event\ncarries the source user-message identity needed to find that turn.\n\nObservation/score expansion is capped at 20 upstream pages of 100 without a partial-result flag; large detail responses do not establish a complete evaluation cohort. If the expected step is missing, continue with [observation search](/insights/evaluation/reading#observations-across-traces) rather than claiming the turn ended there.\n\n## Named request examples\n\n### evals-getTrace-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"traceId\": \"trace_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-reading-02-request\n\nGuide request for Locate the slow or failed step. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationId\": \"conv_123\",\n  \"sourceUserMessageId\": \"msg_abc\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/get-trace",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "get-trace"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"traceId\": \"trace_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"trace\": {\n    \"summary\": {\n      \"traceId\": \"example_123\",\n      \"name\": \"example\",\n      \"inputJson\": \"{}\",\n      \"outputJson\": \"{}\",\n      \"latencySeconds\": 1,\n      \"totalCost\": 1,\n      \"environment\": \"example\",\n      \"tags\": [\n        \"example\"\n      ],\n      \"metadataJson\": \"{}\",\n      \"bookmarked\": true,\n      \"version\": \"example\",\n      \"release\": \"example\",\n      \"userId\": \"example_123\",\n      \"sessionId\": \"example_123\",\n      \"observationCount\": 1,\n      \"conversationId\": \"example_123\",\n      \"sourceUserMessageId\": \"example_123\",\n      \"profileId\": \"example_123\",\n      \"configHash\": \"example\",\n      \"inputTokens\": \"1\",\n      \"outputTokens\": \"1\",\n      \"totalTokens\": \"1\",\n      \"errorCount\": 1,\n      \"warningCount\": 1,\n      \"defaultCount\": 1,\n      \"debugCount\": 1,\n      \"commentCount\": 1\n    },\n    \"observations\": [\n      {\n        \"observationId\": \"example_123\",\n        \"traceId\": \"example_123\",\n        \"parentObservationId\": \"example_123\",\n        \"type\": \"OBSERVATION_TYPE_SPAN\",\n        \"name\": \"example\",\n        \"level\": \"OBSERVATION_LEVEL_DEBUG\",\n        \"statusMessage\": \"example\",\n        \"latencySeconds\": 1,\n        \"inputJson\": \"{}\",\n        \"outputJson\": \"{}\",\n        \"metadataJson\": \"{}\",\n        \"model\": \"example\",\n        \"modelParametersJson\": \"{}\",\n        \"inputTokens\": \"1\",\n        \"outputTokens\": \"1\",\n        \"totalTokens\": \"1\",\n        \"inputCost\": 1,\n        \"outputCost\": 1,\n        \"totalCost\": 1,\n        \"environment\": \"example\",\n        \"version\": \"example\",\n        \"promptName\": \"Example text\",\n        \"promptVersion\": 1,\n        \"commentCount\": 1,\n        \"conversationId\": \"example_123\",\n        \"sourceUserMessageId\": \"example_123\",\n        \"profileId\": \"example_123\",\n        \"configHash\": \"example\"\n      }\n    ],\n    \"scores\": [\n      {\n        \"scoreId\": \"example_123\",\n        \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n        \"targetId\": \"example_123\",\n        \"name\": \"example\",\n        \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n        \"numericValue\": 1,\n        \"stringValue\": \"example\",\n        \"booleanValue\": true,\n        \"source\": \"SCORE_SOURCE_JUDGE\",\n        \"comment\": \"example\",\n        \"textValue\": \"Example text\",\n        \"authorUserId\": \"example_123\",\n        \"configId\": \"example_123\",\n        \"queueId\": \"example_123\",\n        \"traceId\": \"example_123\",\n        \"observationId\": \"example_123\",\n        \"sessionId\": \"example_123\",\n        \"datasetRunId\": \"example_123\",\n        \"environment\": \"example\",\n        \"metadataJson\": \"{}\",\n        \"traceName\": \"example\",\n        \"userId\": \"example_123\",\n        \"sourceLabel\": \"example\",\n        \"conversationId\": \"example_123\",\n        \"messageId\": \"example_123\",\n        \"messageSequence\": \"1\",\n        \"profileId\": \"example_123\",\n        \"configHash\": \"example\"\n      }\n    ]\n  },\n  \"contentRedacted\": true\n}"
                }
              ]
            },
            {
              "name": "List observations",
              "request": {
                "name": "List observations",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the individual spans, generations and events inside traces.\n\n## Named request examples\n\n### evals-listObservations-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-04-request\n\nGuide request for Check whether the same tool keeps failing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"filters\": [\n    {\n      \"column\": \"level\",\n      \"operator\": \"=\",\n      \"type\": \"EVAL_FILTER_TYPE_STRING\",\n      \"stringValue\": \"ERROR\"\n    }\n  ],\n  \"pageSize\": 50\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-observations",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-observations"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listObservations-response",
                  "originalRequest": {
                    "name": "List observations",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the individual spans, generations and events inside traces.\n\n## Named request examples\n\n### evals-listObservations-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-04-request\n\nGuide request for Check whether the same tool keeps failing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"filters\": [\n    {\n      \"column\": \"level\",\n      \"operator\": \"=\",\n      \"type\": \"EVAL_FILTER_TYPE_STRING\",\n      \"stringValue\": \"ERROR\"\n    }\n  ],\n  \"pageSize\": 50\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-observations",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-observations"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"observations\": [\n    {\n      \"observationId\": \"example_123\",\n      \"traceId\": \"example_123\",\n      \"parentObservationId\": \"example_123\",\n      \"type\": \"OBSERVATION_TYPE_SPAN\",\n      \"name\": \"example\",\n      \"level\": \"OBSERVATION_LEVEL_DEBUG\",\n      \"statusMessage\": \"example\",\n      \"startTime\": \"2026-09-16T12:00:00Z\",\n      \"endTime\": \"2026-09-16T12:00:00Z\",\n      \"completionStartTime\": \"2026-09-16T12:00:00Z\",\n      \"latencySeconds\": 1,\n      \"inputJson\": \"{}\",\n      \"outputJson\": \"{}\",\n      \"metadataJson\": \"{}\",\n      \"model\": \"example\",\n      \"modelParametersJson\": \"{}\",\n      \"inputTokens\": \"1\",\n      \"outputTokens\": \"1\",\n      \"totalTokens\": \"1\",\n      \"inputCost\": 1,\n      \"outputCost\": 1,\n      \"totalCost\": 1,\n      \"environment\": \"example\",\n      \"version\": \"example\",\n      \"promptName\": \"Example text\",\n      \"promptVersion\": 1,\n      \"scores\": [\n        {\n          \"scoreId\": \"example_123\",\n          \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n          \"targetId\": \"example_123\",\n          \"name\": \"example\",\n          \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n          \"numericValue\": 1,\n          \"stringValue\": \"example\",\n          \"booleanValue\": true,\n          \"source\": \"SCORE_SOURCE_JUDGE\",\n          \"comment\": \"example\",\n          \"textValue\": \"Example text\",\n          \"authorUserId\": \"example_123\",\n          \"configId\": \"example_123\",\n          \"queueId\": \"example_123\",\n          \"traceId\": \"example_123\",\n          \"observationId\": \"example_123\",\n          \"sessionId\": \"example_123\",\n          \"datasetRunId\": \"example_123\",\n          \"environment\": \"example\",\n          \"metadataJson\": \"{}\",\n          \"traceName\": \"example\",\n          \"userId\": \"example_123\",\n          \"sourceLabel\": \"example\",\n          \"conversationId\": \"example_123\",\n          \"messageId\": \"example_123\",\n          \"messageSequence\": \"1\",\n          \"profileId\": \"example_123\",\n          \"configHash\": \"example\"\n        }\n      ],\n      \"commentCount\": 1,\n      \"conversationId\": \"example_123\",\n      \"sourceUserMessageId\": \"example_123\",\n      \"profileId\": \"example_123\",\n      \"configHash\": \"example\"\n    }\n  ],\n  \"contentRedacted\": true,\n  \"cursorPage\": {\n    \"nextCursor\": \"example\",\n    \"limit\": 1,\n    \"totalItems\": 1\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-reading-json-02-response",
                  "originalRequest": {
                    "name": "List observations",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the individual spans, generations and events inside traces.\n\n## Named request examples\n\n### evals-listObservations-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-04-request\n\nGuide request for Check whether the same tool keeps failing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"filters\": [\n    {\n      \"column\": \"level\",\n      \"operator\": \"=\",\n      \"type\": \"EVAL_FILTER_TYPE_STRING\",\n      \"stringValue\": \"ERROR\"\n    }\n  ],\n  \"pageSize\": 50\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-observations",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-observations"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"observations\": [\n    {\n      \"observationId\": \"obs_9\",\n      \"traceId\": \"trc_a1b2c3\",\n      \"parentObservationId\": \"obs_2\",\n      \"name\": \"get_weather\",\n      \"level\": \"OBSERVATION_LEVEL_ERROR\",\n      \"statusMessage\": \"upstream timeout\",\n      \"latencySeconds\": 30\n    }\n  ],\n  \"cursorPage\": {\n    \"limit\": 50\n  },\n  \"contentRedacted\": true\n}"
                }
              ]
            },
            {
              "name": "List traces",
              "request": {
                "name": "List traces",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists traces for the authenticated tenant, newest first — the only ordering, so an\n`orderBy` other than `timestamp.desc` is rejected with HTTP 400. One trace is one\nconversation turn.\n\n### Filtering by entity\n\n`conversationId`, `profileId`, `userId` and `sessionId` are applied at the source,\nnot over the returned page. Repeated entity filters intersect: `conversationId` +\n`profileId` returns turns in that conversation produced by that profile, not the\nunion.\n\n`cursorPage.totalItems` is the only total any cursor-paged operation returns, and\nit is omitted whenever a profile, config-hash or level filter is set — that total\ncannot be counted exactly — or the count is unavailable.\n\n`conversationId` accepts the bare thread id — it is qualified with your verified\ntenant server-side, so an id held by a product surface works without the caller\nreconstructing the tenant-prefixed form.\n\nThe `filters` array is the general filter-builder vocabulary. Entity columns there\n(`conversationId`, `profileId`, `configHash`, `sourceUserMessageId`) accept an exact\n`=` match or `any of` a set. A `level` row matches traces with at least one\nobservation at that level. Latency, token and cost columns are aggregates over a\ntrace and cannot be filtered here (use `list-observations`). A filter row the\nunderlying store cannot express — an inexact operator on an entity column, an\naggregate column, or an unsupported column — is rejected with HTTP 400 rather than\napplied to the returned page.\n\nHistorical untagged traces can remain absent from entity-filtered results. The legacy tag-backfill operation has been removed; do not infer absence of a conversation from an empty tag query.\n\n### Trace query support\n\nA profile filter cannot be combined with [`level`](/api/evals/list-traces#request-field-level), and free-text search is not implemented. Narrow the supported profile/time query instead of relying on an ignored search setting.\n\nFor aggregate analysis, use supported observation-level filters to investigate one step or analyze an explicitly collected dataset. Keep the unit clear: one observation's cost is not the entire turn's cost.\n\n## Named request examples\n\n### evals-listTraces-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-01-request\n\nGuide request for Find the reply the customer reported. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"fromTime\": \"2026-08-01T00:00:00Z\",\n  \"toTime\": \"2026-08-14T00:00:00Z\",\n  \"pageSize\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-traces",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-traces"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listTraces-response",
                  "originalRequest": {
                    "name": "List traces",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists traces for the authenticated tenant, newest first — the only ordering, so an\n`orderBy` other than `timestamp.desc` is rejected with HTTP 400. One trace is one\nconversation turn.\n\n### Filtering by entity\n\n`conversationId`, `profileId`, `userId` and `sessionId` are applied at the source,\nnot over the returned page. Repeated entity filters intersect: `conversationId` +\n`profileId` returns turns in that conversation produced by that profile, not the\nunion.\n\n`cursorPage.totalItems` is the only total any cursor-paged operation returns, and\nit is omitted whenever a profile, config-hash or level filter is set — that total\ncannot be counted exactly — or the count is unavailable.\n\n`conversationId` accepts the bare thread id — it is qualified with your verified\ntenant server-side, so an id held by a product surface works without the caller\nreconstructing the tenant-prefixed form.\n\nThe `filters` array is the general filter-builder vocabulary. Entity columns there\n(`conversationId`, `profileId`, `configHash`, `sourceUserMessageId`) accept an exact\n`=` match or `any of` a set. A `level` row matches traces with at least one\nobservation at that level. Latency, token and cost columns are aggregates over a\ntrace and cannot be filtered here (use `list-observations`). A filter row the\nunderlying store cannot express — an inexact operator on an entity column, an\naggregate column, or an unsupported column — is rejected with HTTP 400 rather than\napplied to the returned page.\n\nHistorical untagged traces can remain absent from entity-filtered results. The legacy tag-backfill operation has been removed; do not infer absence of a conversation from an empty tag query.\n\n### Trace query support\n\nA profile filter cannot be combined with [`level`](/api/evals/list-traces#request-field-level), and free-text search is not implemented. Narrow the supported profile/time query instead of relying on an ignored search setting.\n\nFor aggregate analysis, use supported observation-level filters to investigate one step or analyze an explicitly collected dataset. Keep the unit clear: one observation's cost is not the entire turn's cost.\n\n## Named request examples\n\n### evals-listTraces-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-01-request\n\nGuide request for Find the reply the customer reported. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"profileId\": \"nutrition_coach\",\n  \"fromTime\": \"2026-08-01T00:00:00Z\",\n  \"toTime\": \"2026-08-14T00:00:00Z\",\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-traces",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-traces"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"traces\": [\n    {\n      \"traceId\": \"example_123\",\n      \"name\": \"example\",\n      \"timestamp\": \"2026-09-16T12:00:00Z\",\n      \"inputJson\": \"{}\",\n      \"outputJson\": \"{}\",\n      \"latencySeconds\": 1,\n      \"totalCost\": 1,\n      \"environment\": \"example\",\n      \"tags\": [\n        \"example\"\n      ],\n      \"metadataJson\": \"{}\",\n      \"bookmarked\": true,\n      \"version\": \"example\",\n      \"release\": \"example\",\n      \"userId\": \"example_123\",\n      \"sessionId\": \"example_123\",\n      \"observationCount\": 1,\n      \"conversationId\": \"example_123\",\n      \"sourceUserMessageId\": \"example_123\",\n      \"profileId\": \"example_123\",\n      \"configHash\": \"example\",\n      \"inputTokens\": \"1\",\n      \"outputTokens\": \"1\",\n      \"totalTokens\": \"1\",\n      \"errorCount\": 1,\n      \"warningCount\": 1,\n      \"defaultCount\": 1,\n      \"debugCount\": 1,\n      \"scores\": [\n        {\n          \"scoreId\": \"example_123\",\n          \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n          \"targetId\": \"example_123\",\n          \"name\": \"example\",\n          \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n          \"numericValue\": 1,\n          \"stringValue\": \"example\",\n          \"booleanValue\": true,\n          \"source\": \"SCORE_SOURCE_JUDGE\",\n          \"comment\": \"example\",\n          \"textValue\": \"Example text\",\n          \"authorUserId\": \"example_123\",\n          \"configId\": \"example_123\",\n          \"queueId\": \"example_123\",\n          \"traceId\": \"example_123\",\n          \"observationId\": \"example_123\",\n          \"sessionId\": \"example_123\",\n          \"datasetRunId\": \"example_123\",\n          \"environment\": \"example\",\n          \"metadataJson\": \"{}\",\n          \"traceName\": \"example\",\n          \"userId\": \"example_123\",\n          \"sourceLabel\": \"example\",\n          \"conversationId\": \"example_123\",\n          \"messageId\": \"example_123\",\n          \"messageSequence\": \"1\",\n          \"profileId\": \"example_123\",\n          \"configHash\": \"example\"\n        }\n      ],\n      \"commentCount\": 1\n    }\n  ],\n  \"contentRedacted\": true,\n  \"cursorPage\": {\n    \"nextCursor\": \"example\",\n    \"limit\": 1,\n    \"totalItems\": 1\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Sessions",
          "description": {
            "content": "Group traces by session.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get a session",
              "request": {
                "name": "Get a session",
                "description": {
                  "type": "text/markdown",
                  "content": "Fetch one session and the traces belonging to it.\n\n### Session summaries\n\nSession summaries can include activity outside the list window, and a session can repeat at cursor boundaries. Deduplicate by session ID when collecting pages. Missing rollup data reported as zero is not proof that the session used no resources. Keep those limits with your diagnosis.\n\n## Named request examples\n\n### evals-getSession-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"sessionId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/get-session",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "get-session"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-getSession-response",
                  "originalRequest": {
                    "name": "Get a session",
                    "description": {
                      "type": "text/markdown",
                      "content": "Fetch one session and the traces belonging to it.\n\n### Session summaries\n\nSession summaries can include activity outside the list window, and a session can repeat at cursor boundaries. Deduplicate by session ID when collecting pages. Missing rollup data reported as zero is not proof that the session used no resources. Keep those limits with your diagnosis.\n\n## Named request examples\n\n### evals-getSession-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"sessionId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/get-session",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "get-session"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"sessionId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"session\": {\n    \"summary\": {\n      \"sessionId\": \"example_123\",\n      \"durationSeconds\": 1,\n      \"environment\": \"example\",\n      \"userIds\": [\n        \"example_123\"\n      ],\n      \"traceCount\": 1,\n      \"totalCost\": 1,\n      \"inputTokens\": \"1\",\n      \"outputTokens\": \"1\",\n      \"totalTokens\": \"1\",\n      \"traceTags\": [\n        \"example\"\n      ],\n      \"commentCount\": 1,\n      \"metadataJson\": \"{}\",\n      \"bookmarked\": true,\n      \"conversationIds\": [\n        \"example_123\"\n      ]\n    },\n    \"traces\": [\n      {\n        \"traceId\": \"example_123\",\n        \"name\": \"example\",\n        \"inputJson\": \"{}\",\n        \"outputJson\": \"{}\",\n        \"latencySeconds\": 1,\n        \"totalCost\": 1,\n        \"environment\": \"example\",\n        \"tags\": [\n          \"example\"\n        ],\n        \"metadataJson\": \"{}\",\n        \"bookmarked\": true,\n        \"version\": \"example\",\n        \"release\": \"example\",\n        \"userId\": \"example_123\",\n        \"sessionId\": \"example_123\",\n        \"observationCount\": 1,\n        \"conversationId\": \"example_123\",\n        \"sourceUserMessageId\": \"example_123\",\n        \"profileId\": \"example_123\",\n        \"configHash\": \"example\",\n        \"inputTokens\": \"1\",\n        \"outputTokens\": \"1\",\n        \"totalTokens\": \"1\",\n        \"errorCount\": 1,\n        \"warningCount\": 1,\n        \"defaultCount\": 1,\n        \"debugCount\": 1,\n        \"commentCount\": 1\n      }\n    ]\n  },\n  \"contentRedacted\": true\n}"
                }
              ]
            },
            {
              "name": "List sessions",
              "request": {
                "name": "List sessions",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists sessions for the authenticated tenant.\n\nThe `filters` array accepts the session columns `id` (the session id), `userIds`,\n`traceTags`, `createdAt`, `environment` and `metadata`. Columns aggregated over a\nsession — duration, trace count, tokens, scores, comments — cannot be filtered and\nare rejected with HTTP 400. There is no free-text search.\n\nReads are bounded. A session can repeat at an equal-timestamp cursor boundary. Summary activity can extend outside the list window; unavailable rollup data can appear as zero. Do not treat these summaries as a complete frozen cohort.\n\n## Named request examples\n\n### evals-listSessions-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-sessions",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-sessions"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listSessions-response",
                  "originalRequest": {
                    "name": "List sessions",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists sessions for the authenticated tenant.\n\nThe `filters` array accepts the session columns `id` (the session id), `userIds`,\n`traceTags`, `createdAt`, `environment` and `metadata`. Columns aggregated over a\nsession — duration, trace count, tokens, scores, comments — cannot be filtered and\nare rejected with HTTP 400. There is no free-text search.\n\nReads are bounded. A session can repeat at an equal-timestamp cursor boundary. Summary activity can extend outside the list window; unavailable rollup data can appear as zero. Do not treat these summaries as a complete frozen cohort.\n\n## Named request examples\n\n### evals-listSessions-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-sessions",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-sessions"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"sessions\": [\n    {\n      \"sessionId\": \"example_123\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"durationSeconds\": 1,\n      \"environment\": \"example\",\n      \"userIds\": [\n        \"example_123\"\n      ],\n      \"traceCount\": 1,\n      \"totalCost\": 1,\n      \"inputTokens\": \"1\",\n      \"outputTokens\": \"1\",\n      \"totalTokens\": \"1\",\n      \"traceTags\": [\n        \"example\"\n      ],\n      \"scores\": [\n        {\n          \"scoreId\": \"example_123\",\n          \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n          \"targetId\": \"example_123\",\n          \"name\": \"example\",\n          \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n          \"numericValue\": 1,\n          \"stringValue\": \"example\",\n          \"booleanValue\": true,\n          \"source\": \"SCORE_SOURCE_JUDGE\",\n          \"comment\": \"example\",\n          \"textValue\": \"Example text\",\n          \"authorUserId\": \"example_123\",\n          \"configId\": \"example_123\",\n          \"queueId\": \"example_123\",\n          \"traceId\": \"example_123\",\n          \"observationId\": \"example_123\",\n          \"sessionId\": \"example_123\",\n          \"datasetRunId\": \"example_123\",\n          \"environment\": \"example\",\n          \"metadataJson\": \"{}\",\n          \"traceName\": \"example\",\n          \"userId\": \"example_123\",\n          \"sourceLabel\": \"example\",\n          \"conversationId\": \"example_123\",\n          \"messageId\": \"example_123\",\n          \"messageSequence\": \"1\",\n          \"profileId\": \"example_123\",\n          \"configHash\": \"example\"\n        }\n      ],\n      \"commentCount\": 1,\n      \"metadataJson\": \"{}\",\n      \"bookmarked\": true,\n      \"conversationIds\": [\n        \"example_123\"\n      ]\n    }\n  ],\n  \"cursorPage\": {\n    \"nextCursor\": \"example\",\n    \"limit\": 1,\n    \"totalItems\": 1\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Scores",
          "description": {
            "content": "Read scores and record numeric or boolean reviewer ratings on traces. Other target and value types are not currently supported for score writes.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Delete a score",
              "request": {
                "name": "Delete a score",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes a score by ID. The current implementation checks access to the evaluation backend but does not enforce per-author ownership for deletion. Restrict this operation to trusted evaluation administrators until that requirement is implemented.\n\nObtain the score ID from [list scores](/api/evals/list-scores), read back the deletion result and allow for delayed updates in other views. An immediate response does not establish that every analytics projection is cleared.\n\n## Named request examples\n\n### evals-deleteScore-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"scoreId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-08-request\n\nGuide request for Withdraw a rating. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scoreId\": \"scr_7788\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/delete-score",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "delete-score"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"scoreId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-deleteScore-response",
                  "originalRequest": {
                    "name": "Delete a score",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes a score by ID. The current implementation checks access to the evaluation backend but does not enforce per-author ownership for deletion. Restrict this operation to trusted evaluation administrators until that requirement is implemented.\n\nObtain the score ID from [list scores](/api/evals/list-scores), read back the deletion result and allow for delayed updates in other views. An immediate response does not establish that every analytics projection is cleared.\n\n## Named request examples\n\n### evals-deleteScore-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"scoreId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-08-request\n\nGuide request for Withdraw a rating. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"scoreId\": \"scr_7788\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/delete-score",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "delete-score"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"scoreId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true\n}"
                }
              ]
            },
            {
              "name": "List scores",
              "request": {
                "name": "List scores",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists recorded scores across their sources and evaluation targets.\n\n### Filtering by what the rating is about\n\n`conversationId` and `profileId` answer \"every rating on this conversation\" and\n\"every rating on turns this agent profile produced\". Each is decided per score —\non the score's own metadata, or on the trace it scores when the metadata does\nnot say — and combining them is an intersection. `conversationId` accepts a bare\nthread id and qualifies it with your verified tenant.\n\n### Reading the result honestly\n\n**`filterNarrowed`** matters when you paginate. Some filters cannot be applied by\nthe underlying store, so rows are removed after they are fetched: `conversationId`,\n`profileId`, `userId`, the platform `source` values the store does not distinguish,\nand the rows of the `filters` array. The response sets `filterNarrowed: true`\nonly when at least one row was removed from the pages fetched for this response.\nIt can remain false or be omitted even when these filters were evaluated. A page\nmay be shorter than `pageSize` or empty while `cursorPage.nextCursor` still leads\nto more matches — keep following the cursor until it is omitted rather than\nstopping at a short page. A false or omitted flag is not a complete-history or\nconsistent-snapshot guarantee. There is no total.\n\nDeduplicate IDs across pages when collecting a report.\n\n### Score filters and result coverage\n\nCurrent min/max score filters treat zero as unset; to apply a zero bound, collect the relevant permitted pages and filter in your application. See [list-scores](/api/evals/list-scores) for supported filters.\n\n## Named request examples\n\n### evals-listScores-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-03-request\n\nGuide request for Read judgments about that same reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationId\": \"conv_123\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"pageSize\": 50\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-scores",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-scores"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listScores-response",
                  "originalRequest": {
                    "name": "List scores",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists recorded scores across their sources and evaluation targets.\n\n### Filtering by what the rating is about\n\n`conversationId` and `profileId` answer \"every rating on this conversation\" and\n\"every rating on turns this agent profile produced\". Each is decided per score —\non the score's own metadata, or on the trace it scores when the metadata does\nnot say — and combining them is an intersection. `conversationId` accepts a bare\nthread id and qualifies it with your verified tenant.\n\n### Reading the result honestly\n\n**`filterNarrowed`** matters when you paginate. Some filters cannot be applied by\nthe underlying store, so rows are removed after they are fetched: `conversationId`,\n`profileId`, `userId`, the platform `source` values the store does not distinguish,\nand the rows of the `filters` array. The response sets `filterNarrowed: true`\nonly when at least one row was removed from the pages fetched for this response.\nIt can remain false or be omitted even when these filters were evaluated. A page\nmay be shorter than `pageSize` or empty while `cursorPage.nextCursor` still leads\nto more matches — keep following the cursor until it is omitted rather than\nstopping at a short page. A false or omitted flag is not a complete-history or\nconsistent-snapshot guarantee. There is no total.\n\nDeduplicate IDs across pages when collecting a report.\n\n### Score filters and result coverage\n\nCurrent min/max score filters treat zero as unset; to apply a zero bound, collect the relevant permitted pages and filter in your application. See [list-scores](/api/evals/list-scores) for supported filters.\n\n## Named request examples\n\n### evals-listScores-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-03-request\n\nGuide request for Read judgments about that same reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationId\": \"conv_123\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"pageSize\": 50\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-scores",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-scores"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scores\": [\n    {\n      \"scoreId\": \"example_123\",\n      \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n      \"targetId\": \"example_123\",\n      \"name\": \"example\",\n      \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n      \"numericValue\": 1,\n      \"stringValue\": \"example\",\n      \"booleanValue\": true,\n      \"source\": \"SCORE_SOURCE_JUDGE\",\n      \"comment\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"textValue\": \"Example text\",\n      \"authorUserId\": \"example_123\",\n      \"configId\": \"example_123\",\n      \"queueId\": \"example_123\",\n      \"traceId\": \"example_123\",\n      \"observationId\": \"example_123\",\n      \"sessionId\": \"example_123\",\n      \"datasetRunId\": \"example_123\",\n      \"environment\": \"example\",\n      \"metadataJson\": \"{}\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\",\n      \"timestamp\": \"2026-09-16T12:00:00Z\",\n      \"traceName\": \"example\",\n      \"userId\": \"example_123\",\n      \"sourceLabel\": \"example\",\n      \"conversationId\": \"example_123\",\n      \"messageId\": \"example_123\",\n      \"messageSequence\": \"1\",\n      \"profileId\": \"example_123\",\n      \"configHash\": \"example\"\n    }\n  ],\n  \"filterNarrowed\": true,\n  \"cursorPage\": {\n    \"nextCursor\": \"example\",\n    \"limit\": 1,\n    \"totalItems\": 1\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-reading-json-01-response",
                  "originalRequest": {
                    "name": "List scores",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists recorded scores across their sources and evaluation targets.\n\n### Filtering by what the rating is about\n\n`conversationId` and `profileId` answer \"every rating on this conversation\" and\n\"every rating on turns this agent profile produced\". Each is decided per score —\non the score's own metadata, or on the trace it scores when the metadata does\nnot say — and combining them is an intersection. `conversationId` accepts a bare\nthread id and qualifies it with your verified tenant.\n\n### Reading the result honestly\n\n**`filterNarrowed`** matters when you paginate. Some filters cannot be applied by\nthe underlying store, so rows are removed after they are fetched: `conversationId`,\n`profileId`, `userId`, the platform `source` values the store does not distinguish,\nand the rows of the `filters` array. The response sets `filterNarrowed: true`\nonly when at least one row was removed from the pages fetched for this response.\nIt can remain false or be omitted even when these filters were evaluated. A page\nmay be shorter than `pageSize` or empty while `cursorPage.nextCursor` still leads\nto more matches — keep following the cursor until it is omitted rather than\nstopping at a short page. A false or omitted flag is not a complete-history or\nconsistent-snapshot guarantee. There is no total.\n\nDeduplicate IDs across pages when collecting a report.\n\n### Score filters and result coverage\n\nCurrent min/max score filters treat zero as unset; to apply a zero bound, collect the relevant permitted pages and filter in your application. See [list-scores](/api/evals/list-scores) for supported filters.\n\n## Named request examples\n\n### evals-listScores-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-reading-03-request\n\nGuide request for Read judgments about that same reply. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"conversationId\": \"conv_123\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"pageSize\": 50\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-scores",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-scores"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scores\": [\n    {\n      \"scoreId\": \"scr_7788\",\n      \"name\": \"helpfulness\",\n      \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n      \"numericValue\": 4,\n      \"source\": \"SCORE_SOURCE_HUMAN\",\n      \"authorUserId\": \"reviewer_9\",\n      \"configId\": \"cfg_help\",\n      \"traceId\": \"trc_a1b2c3\",\n      \"createdAt\": \"2026-08-12T16:20:00Z\",\n      \"comment\": \"Answered, but buried the actual number.\"\n    }\n  ],\n  \"cursorPage\": {\n    \"limit\": 50\n  },\n  \"filterNarrowed\": true\n}"
                }
              ]
            },
            {
              "name": "Record a score",
              "request": {
                "name": "Record a score",
                "description": {
                  "type": "text/markdown",
                  "content": "Records a tenant-side reviewer/operator score.\n\n### Resolving the rated turn\n\nTurn addressing is trace-only. A bare conversation ID is qualified with trusted tenant context. Messages without the required historical addressing metadata can be rejected; use an independently verified trace ID in that case.\n\nThe API assigns human-source classification and derives rater context from trusted credentials, not the body. A machine key does not identify a human reviewer. A deterministic per-rater/target/name score ID supports replacing a rating, but the current delete operation does not enforce author ownership.\n\n### Supported ratings\n\nUse a trace target with numeric or boolean values. The current API maps the resolved target into `traceId`; categorical/text values and observation/session/dataset-run targets in the schema are not faithfully supported. Use the supported trace/value combinations shown here.\n\n### Examples\n\n```json\n{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"<verified-trace-id>\",\n  \"name\": \"helpfulness\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 4,\n  \"configId\": \"<compatible-config-id>\"\n}\n```\n\n### Re-rating and withdrawing\n\nA stable per-rater/target/name score ID does not alone guarantee one current record across dates. The current API omits the original creation timestamp needed for cross-day replacement. Verify read-back after retries or re-rating. Withdrawal must check creator and scope; delete-score currently lacks that creator check and must remain restricted to trusted operators.\n\n## Named request examples\n\n### evals-recordScore-request\n\nScore an existing trace as an authenticated rater; this numeric example records 0.9.\n\n```json\n\n{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"trace_123\",\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 0.9\n}\n\n```\n\n### cookbook-insights-evaluation-review-05-request\n\nGuide request for 3. Record the rating. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"…\",\n  \"name\": \"helpfulness\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 4,\n  \"configId\": \"cfg_helpfulness\",\n  \"comment\": \"Accurate, but buried the answer in three paragraphs.\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/record-score",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "record-score"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"trace_123\",\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 0.9\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-recordScore-response",
                  "originalRequest": {
                    "name": "Record a score",
                    "description": {
                      "type": "text/markdown",
                      "content": "Records a tenant-side reviewer/operator score.\n\n### Resolving the rated turn\n\nTurn addressing is trace-only. A bare conversation ID is qualified with trusted tenant context. Messages without the required historical addressing metadata can be rejected; use an independently verified trace ID in that case.\n\nThe API assigns human-source classification and derives rater context from trusted credentials, not the body. A machine key does not identify a human reviewer. A deterministic per-rater/target/name score ID supports replacing a rating, but the current delete operation does not enforce author ownership.\n\n### Supported ratings\n\nUse a trace target with numeric or boolean values. The current API maps the resolved target into `traceId`; categorical/text values and observation/session/dataset-run targets in the schema are not faithfully supported. Use the supported trace/value combinations shown here.\n\n### Examples\n\n```json\n{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"<verified-trace-id>\",\n  \"name\": \"helpfulness\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 4,\n  \"configId\": \"<compatible-config-id>\"\n}\n```\n\n### Re-rating and withdrawing\n\nA stable per-rater/target/name score ID does not alone guarantee one current record across dates. The current API omits the original creation timestamp needed for cross-day replacement. Verify read-back after retries or re-rating. Withdrawal must check creator and scope; delete-score currently lacks that creator check and must remain restricted to trusted operators.\n\n## Named request examples\n\n### evals-recordScore-request\n\nScore an existing trace as an authenticated rater; this numeric example records 0.9.\n\n```json\n\n{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"trace_123\",\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 0.9\n}\n\n```\n\n### cookbook-insights-evaluation-review-05-request\n\nGuide request for 3. Record the rating. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"…\",\n  \"name\": \"helpfulness\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 4,\n  \"configId\": \"cfg_helpfulness\",\n  \"comment\": \"Accurate, but buried the answer in three paragraphs.\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/record-score",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "record-score"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"trace_123\",\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"numericValue\": 0.9\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"scoreId\": \"example_123\",\n  \"targetId\": \"example_123\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Score configs",
          "description": {
            "content": "Define the rating scales reviewers pick from.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a score config",
              "request": {
                "name": "Create a score config",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a rating scale that gives scores a consistent interpretation across turns.\n\n## Named request examples\n\n### evals-createScoreConfig-request\n\nCreate a numeric scoring rubric ranging from zero to one.\n\n```json\n\n{\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"minValue\": 0,\n  \"maxValue\": 1\n}\n\n```\n\n### cookbook-insights-evaluation-review-01-request\n\nGuide request for 1. Define the dimensions first. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"helpfulness\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"minValue\": 1,\n  \"maxValue\": 5\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/create-score-config",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "create-score-config"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"minValue\": 0,\n  \"maxValue\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-createScoreConfig-response",
                  "originalRequest": {
                    "name": "Create a score config",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a rating scale that gives scores a consistent interpretation across turns.\n\n## Named request examples\n\n### evals-createScoreConfig-request\n\nCreate a numeric scoring rubric ranging from zero to one.\n\n```json\n\n{\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"minValue\": 0,\n  \"maxValue\": 1\n}\n\n```\n\n### cookbook-insights-evaluation-review-01-request\n\nGuide request for 1. Define the dimensions first. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"helpfulness\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"minValue\": 1,\n  \"maxValue\": 5\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/create-score-config",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "create-score-config"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"answer-quality\",\n  \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n  \"minValue\": 0,\n  \"maxValue\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"configId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "List score configs",
              "request": {
                "name": "List score configs",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the rating scales defined for this tenant.\n\nUse this list to select a compatible scale before recording a score. Archived\nconfigs remain readable for historical interpretation but are not offered for new ratings.\n\n## Named request examples\n\n### evals-listScoreConfigs-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-score-configs",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-score-configs"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listScoreConfigs-response",
                  "originalRequest": {
                    "name": "List score configs",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the rating scales defined for this tenant.\n\nUse this list to select a compatible scale before recording a score. Archived\nconfigs remain readable for historical interpretation but are not offered for new ratings.\n\n## Named request examples\n\n### evals-listScoreConfigs-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-score-configs",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-score-configs"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"configs\": [\n    {\n      \"configId\": \"example_123\",\n      \"name\": \"example\",\n      \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n      \"description\": \"example\",\n      \"minValue\": 1,\n      \"maxValue\": 1,\n      \"categories\": [\n        {\n          \"label\": \"example\",\n          \"value\": 1\n        }\n      ],\n      \"isArchived\": true,\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 1,\n    \"totalItems\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Update a score config",
              "request": {
                "name": "Update a score config",
                "description": {
                  "type": "text/markdown",
                  "content": "Edits a score config, and archives one via `isArchived`. Optional fields are omitted rather than zeroed, so leaving a field out means \"leave it alone\" rather than \"set it to zero\".\n\n## Named request examples\n\n### evals-updateScoreConfig-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"configId\": \"example_123\",\n  \"name\": \"example\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/update-score-config",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "update-score-config"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"configId\": \"example_123\",\n  \"name\": \"example\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-updateScoreConfig-response",
                  "originalRequest": {
                    "name": "Update a score config",
                    "description": {
                      "type": "text/markdown",
                      "content": "Edits a score config, and archives one via `isArchived`. Optional fields are omitted rather than zeroed, so leaving a field out means \"leave it alone\" rather than \"set it to zero\".\n\n## Named request examples\n\n### evals-updateScoreConfig-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"configId\": \"example_123\",\n  \"name\": \"example\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/update-score-config",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "update-score-config"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"configId\": \"example_123\",\n  \"name\": \"example\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"config\": {\n    \"configId\": \"example_123\",\n    \"name\": \"example\",\n    \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n    \"description\": \"example\",\n    \"minValue\": 1,\n    \"maxValue\": 1,\n    \"categories\": [\n      {\n        \"label\": \"example\",\n        \"value\": 1\n      }\n    ],\n    \"isArchived\": true,\n    \"createdAt\": \"2026-09-16T12:00:00Z\",\n    \"updatedAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Comments",
          "description": {
            "content": "Free-text notes attached to a trace, observation or session.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Create a comment",
              "request": {
                "name": "Create a comment",
                "description": {
                  "type": "text/markdown",
                  "content": "Attaches a reviewer note to an evaluation object. Author attribution comes from trusted caller context when available; a bare key may create an unattributed comment. Current withdrawal suppresses platform reads rather than proving physical erasure.\n\n## Named request examples\n\n### evals-createComment-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n  \"objectId\": \"example_123\",\n  \"content\": \"Example text\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-06-request\n\nGuide request for Save the explanation with the reviewed turn. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n  \"objectId\": \"trc_a1b2c3\",\n  \"content\": \"Tool call returned stale data.\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/create-comment",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "create-comment"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n  \"objectId\": \"example_123\",\n  \"content\": \"Example text\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-createComment-response",
                  "originalRequest": {
                    "name": "Create a comment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Attaches a reviewer note to an evaluation object. Author attribution comes from trusted caller context when available; a bare key may create an unattributed comment. Current withdrawal suppresses platform reads rather than proving physical erasure.\n\n## Named request examples\n\n### evals-createComment-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n  \"objectId\": \"example_123\",\n  \"content\": \"Example text\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-06-request\n\nGuide request for Save the explanation with the reviewed turn. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n  \"objectId\": \"trc_a1b2c3\",\n  \"content\": \"Tool call returned stale data.\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/create-comment",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "create-comment"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n  \"objectId\": \"example_123\",\n  \"content\": \"Example text\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"commentId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Delete a comment",
              "request": {
                "name": "Delete a comment",
                "description": {
                  "type": "text/markdown",
                  "content": "Deletes one comment by id.\n\n## Named request examples\n\n### evals-deleteComment-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"commentId\": \"example_123\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/delete-comment",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "delete-comment"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"commentId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-deleteComment-response",
                  "originalRequest": {
                    "name": "Delete a comment",
                    "description": {
                      "type": "text/markdown",
                      "content": "Deletes one comment by id.\n\n## Named request examples\n\n### evals-deleteComment-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"commentId\": \"example_123\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/delete-comment",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "delete-comment"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"commentId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true\n}"
                }
              ]
            },
            {
              "name": "List comments",
              "request": {
                "name": "List comments",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the comments on one object.\n\n## Named request examples\n\n### evals-listComments-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-comments",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-comments"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listComments-response",
                  "originalRequest": {
                    "name": "List comments",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the comments on one object.\n\n## Named request examples\n\n### evals-listComments-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-comments",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-comments"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"comments\": [\n    {\n      \"commentId\": \"example_123\",\n      \"objectType\": \"COMMENT_OBJECT_TYPE_TRACE\",\n      \"objectId\": \"example_123\",\n      \"content\": \"Example text\",\n      \"authorUserId\": \"example_123\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 1,\n    \"totalItems\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Datasets",
          "description": {
            "content": "Curate evaluation datasets and the items in them.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Add a dataset item",
              "request": {
                "name": "Add a dataset item",
                "description": {
                  "type": "text/markdown",
                  "content": "Adds a dataset item. The ID is derived from the dataset and `sourceUserMessageId` when supplied, otherwise from the source trace ID. Repeating that identity addresses the same item; a source identity must be meaningful and stable. Provide the intended input and expected output explicitly: the current API does not fetch a gold answer from a source trace.\n\n### Dataset input capture and identity\n\n| Input or identity | Contract |\n|---|---|\n| Dataset item address | Derived from the dataset and source turn. Adding the same turn to different datasets produces different items. |\n| [`inputJson`](/api/evals/add-dataset-item#request-field-inputjson) and expected output | Only supplied content is recorded; an empty input does not trigger automatic context capture. |\n| Retry or replacement | A stable item ID does not establish ordering between a stale retry and a newer curated revision. Reconcile the stored item before retrying. |\n\nCapture and curate source material explicitly, including redaction, omitted fields and the provenance of tool or memory fixtures.\n\n## Named request examples\n\n### evals-addDatasetItem-request\n\nHarvest an existing trace into a named dataset; replace sourceTraceId with the trace being curated.\n\n```json\n\n{\n  \"datasetId\": \"support-answers\",\n  \"sourceTraceId\": \"trace_123\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-02-request\n\nGuide request for 2. Save the input needed to reproduce the problem. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetId\": \"support-assistant-regressions\",\n  \"conversationId\": \"conv_123\",\n  \"sourceUserMessageId\": \"msg_abc\",\n  \"inputJson\": \"{\\\"question\\\":\\\"What is the return window?\\\"}\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/add-dataset-item",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "add-dataset-item"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"datasetId\": \"support-answers\",\n  \"sourceTraceId\": \"trace_123\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-addDatasetItem-response",
                  "originalRequest": {
                    "name": "Add a dataset item",
                    "description": {
                      "type": "text/markdown",
                      "content": "Adds a dataset item. The ID is derived from the dataset and `sourceUserMessageId` when supplied, otherwise from the source trace ID. Repeating that identity addresses the same item; a source identity must be meaningful and stable. Provide the intended input and expected output explicitly: the current API does not fetch a gold answer from a source trace.\n\n### Dataset input capture and identity\n\n| Input or identity | Contract |\n|---|---|\n| Dataset item address | Derived from the dataset and source turn. Adding the same turn to different datasets produces different items. |\n| [`inputJson`](/api/evals/add-dataset-item#request-field-inputjson) and expected output | Only supplied content is recorded; an empty input does not trigger automatic context capture. |\n| Retry or replacement | A stable item ID does not establish ordering between a stale retry and a newer curated revision. Reconcile the stored item before retrying. |\n\nCapture and curate source material explicitly, including redaction, omitted fields and the provenance of tool or memory fixtures.\n\n## Named request examples\n\n### evals-addDatasetItem-request\n\nHarvest an existing trace into a named dataset; replace sourceTraceId with the trace being curated.\n\n```json\n\n{\n  \"datasetId\": \"support-answers\",\n  \"sourceTraceId\": \"trace_123\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-02-request\n\nGuide request for 2. Save the input needed to reproduce the problem. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetId\": \"support-assistant-regressions\",\n  \"conversationId\": \"conv_123\",\n  \"sourceUserMessageId\": \"msg_abc\",\n  \"inputJson\": \"{\\\"question\\\":\\\"What is the return window?\\\"}\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/add-dataset-item",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "add-dataset-item"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetId\": \"support-answers\",\n  \"sourceTraceId\": \"trace_123\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"itemId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Create a dataset",
              "request": {
                "name": "Create a dataset",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates an evaluation dataset.\n\n## Named request examples\n\n### evals-createDataset-request\n\nCreate a named dataset for subsequent curation.\n\n```json\n\n{\n  \"name\": \"support-answers\",\n  \"description\": \"Curated product support questions and expected answers.\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-01-request\n\nGuide request for 1. Create the dataset. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"support-assistant-regressions\",\n  \"description\": \"Turns we do not want to break\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/create-dataset",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "create-dataset"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"support-answers\",\n  \"description\": \"Curated product support questions and expected answers.\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-createDataset-response",
                  "originalRequest": {
                    "name": "Create a dataset",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates an evaluation dataset.\n\n## Named request examples\n\n### evals-createDataset-request\n\nCreate a named dataset for subsequent curation.\n\n```json\n\n{\n  \"name\": \"support-answers\",\n  \"description\": \"Curated product support questions and expected answers.\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-01-request\n\nGuide request for 1. Create the dataset. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"support-assistant-regressions\",\n  \"description\": \"Turns we do not want to break\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/create-dataset",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "create-dataset"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"support-answers\",\n  \"description\": \"Curated product support questions and expected answers.\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"datasetId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "List dataset items",
              "request": {
                "name": "List dataset items",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists items in a dataset.\n\n## Named request examples\n\n### evals-listDatasetItems-request\n\nList items from an existing dataset by name.\n\n```json\n\n{\n  \"datasetName\": \"support-answers\",\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-03-request\n\nGuide request for 3. Define what an acceptable answer must do. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"onlyMissingExpectedOutput\": true\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-dataset-items",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-dataset-items"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"datasetName\": \"support-answers\",\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listDatasetItems-response",
                  "originalRequest": {
                    "name": "List dataset items",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists items in a dataset.\n\n## Named request examples\n\n### evals-listDatasetItems-request\n\nList items from an existing dataset by name.\n\n```json\n\n{\n  \"datasetName\": \"support-answers\",\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-03-request\n\nGuide request for 3. Define what an acceptable answer must do. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"onlyMissingExpectedOutput\": true\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-dataset-items",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-dataset-items"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetName\": \"support-answers\",\n  \"page\": 1,\n  \"pageSize\": 20\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"items\": [\n    {\n      \"itemId\": \"example_123\",\n      \"datasetId\": \"example_123\",\n      \"datasetName\": \"example\",\n      \"inputJson\": \"{}\",\n      \"expectedOutputJson\": \"{}\",\n      \"metadataJson\": \"{}\",\n      \"sourceTraceId\": \"example_123\",\n      \"sourceObservationId\": \"example_123\",\n      \"status\": \"DATASET_ITEM_STATUS_ACTIVE\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 1,\n    \"totalItems\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "List datasets",
              "request": {
                "name": "List datasets",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the evaluation datasets defined for this tenant.\n\n## Named request examples\n\n### evals-listDatasets-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-08-request\n\nGuide request for Browse the datasets. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-datasets",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-datasets"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listDatasets-response",
                  "originalRequest": {
                    "name": "List datasets",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the evaluation datasets defined for this tenant.\n\n## Named request examples\n\n### evals-listDatasets-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-08-request\n\nGuide request for Browse the datasets. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-datasets",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-datasets"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"datasets\": [\n    {\n      \"datasetId\": \"example_123\",\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"metadataJson\": \"{}\",\n      \"itemCount\": 1,\n      \"runCount\": 1,\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"lastRunAt\": \"2026-09-16T12:00:00Z\",\n      \"inputSchemaJson\": \"{}\",\n      \"expectedOutputSchemaJson\": \"{}\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 1,\n    \"totalItems\": 1,\n    \"totalPages\": 1\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-datasets-and-runs-json-03-response",
                  "originalRequest": {
                    "name": "List datasets",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the evaluation datasets defined for this tenant.\n\n## Named request examples\n\n### evals-listDatasets-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-08-request\n\nGuide request for Browse the datasets. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"page\": 1,\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-datasets",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-datasets"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"datasets\": [\n    {\n      \"datasetId\": \"ds_771\",\n      \"name\": \"support-assistant-regressions\",\n      \"description\": \"Turns a reviewer marked as wrong\",\n      \"itemCount\": 120,\n      \"runCount\": 8,\n      \"lastRunAt\": \"2026-08-12T18:00:00Z\",\n      \"createdAt\": \"2026-06-02T10:00:00Z\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 25,\n    \"totalItems\": 3,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Update a dataset item",
              "request": {
                "name": "Update a dataset item",
                "description": {
                  "type": "text/markdown",
                  "content": "Edits an item — typically to fill in `expectedOutputJson` after review.\n\n## Named request examples\n\n### evals-updateDatasetItem-request\n\nReplace an existing item using its dataset name; retain the input when revising its expected output.\n\n```json\n\n{\n  \"itemId\": \"item_123\",\n  \"datasetId\": \"support-answers\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-04-request\n\nGuide request for 3. Define what an acceptable answer must do. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"itemId\": \"…\",\n  \"datasetId\": \"support-assistant-regressions\",\n  \"expectedOutputJson\": \"{\\\"answer\\\": \\\"…\\\"}\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/update-dataset-item",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "update-dataset-item"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"itemId\": \"item_123\",\n  \"datasetId\": \"support-answers\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-updateDatasetItem-response",
                  "originalRequest": {
                    "name": "Update a dataset item",
                    "description": {
                      "type": "text/markdown",
                      "content": "Edits an item — typically to fill in `expectedOutputJson` after review.\n\n## Named request examples\n\n### evals-updateDatasetItem-request\n\nReplace an existing item using its dataset name; retain the input when revising its expected output.\n\n```json\n\n{\n  \"itemId\": \"item_123\",\n  \"datasetId\": \"support-answers\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-04-request\n\nGuide request for 3. Define what an acceptable answer must do. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"itemId\": \"…\",\n  \"datasetId\": \"support-assistant-regressions\",\n  \"expectedOutputJson\": \"{\\\"answer\\\": \\\"…\\\"}\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/update-dataset-item",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "update-dataset-item"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"itemId\": \"item_123\",\n  \"datasetId\": \"support-answers\",\n  \"inputJson\": \"{\\\"question\\\":\\\"How do I reset my password?\\\"}\",\n  \"expectedOutputJson\": \"\\\"Use the password reset link on the sign-in page.\\\"\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"itemId\": \"example_123\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Dataset runs",
          "description": {
            "content": "Record what a harness scored on a dataset, and read past runs back.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get a dataset run",
              "request": {
                "name": "Get a dataset run",
                "description": {
                  "type": "text/markdown",
                  "content": "Fetches run metadata by dataset name and run name. It does not return per-item results.\n\n## Named request examples\n\n### evals-getDatasetRun-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetName\": \"example\",\n  \"runName\": \"example\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-07-request\n\nGuide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"runName\": \"2026-08-12-candidate\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/get-dataset-run",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "get-dataset-run"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"datasetName\": \"example\",\n  \"runName\": \"example\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-getDatasetRun-response",
                  "originalRequest": {
                    "name": "Get a dataset run",
                    "description": {
                      "type": "text/markdown",
                      "content": "Fetches run metadata by dataset name and run name. It does not return per-item results.\n\n## Named request examples\n\n### evals-getDatasetRun-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetName\": \"example\",\n  \"runName\": \"example\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-07-request\n\nGuide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"runName\": \"2026-08-12-candidate\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/get-dataset-run",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "get-dataset-run"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetName\": \"example\",\n  \"runName\": \"example\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"run\": {\n    \"runId\": \"example_123\",\n    \"datasetId\": \"example_123\",\n    \"name\": \"example\",\n    \"description\": \"example\",\n    \"metadataJson\": \"{}\",\n    \"itemCount\": 1,\n    \"createdAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-datasets-and-runs-json-02-response",
                  "originalRequest": {
                    "name": "Get a dataset run",
                    "description": {
                      "type": "text/markdown",
                      "content": "Fetches run metadata by dataset name and run name. It does not return per-item results.\n\n## Named request examples\n\n### evals-getDatasetRun-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetName\": \"example\",\n  \"runName\": \"example\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-07-request\n\nGuide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"runName\": \"2026-08-12-candidate\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/get-dataset-run",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "get-dataset-run"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetName\": \"example\",\n  \"runName\": \"example\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"run\": {\n    \"runId\": \"run_0912\",\n    \"name\": \"2026-08-12-candidate\",\n    \"datasetId\": \"ds_771\",\n    \"itemCount\": 120,\n    \"metadataJson\": \"{\\\"profileRevisionHash\\\":\\\"9f2c1e…\\\"}\",\n    \"createdAt\": \"2026-08-12T18:00:00Z\"\n  }\n}"
                }
              ]
            },
            {
              "name": "List dataset runs",
              "request": {
                "name": "List dataset runs",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists past runs against a dataset.\n\nUses cursorPage. Dataset-name resolution currently searches only the first dataset page. Item-count enrichment is bounded and can leave zero after failure; a zero count does not prove that no items ran.\n\n## Named request examples\n\n### evals-listDatasetRuns-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetName\": \"example\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-06-request\n\nGuide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"pageSize\": 25\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-dataset-runs",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-dataset-runs"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"datasetName\": \"example\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listDatasetRuns-response",
                  "originalRequest": {
                    "name": "List dataset runs",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists past runs against a dataset.\n\nUses cursorPage. Dataset-name resolution currently searches only the first dataset page. Item-count enrichment is bounded and can leave zero after failure; a zero count does not prove that no items ran.\n\n## Named request examples\n\n### evals-listDatasetRuns-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetName\": \"example\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-06-request\n\nGuide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-dataset-runs",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-dataset-runs"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetName\": \"example\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runs\": [\n    {\n      \"runId\": \"example_123\",\n      \"datasetId\": \"example_123\",\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"metadataJson\": \"{}\",\n      \"itemCount\": 1,\n      \"createdAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"cursorPage\": {\n    \"nextCursor\": \"example\",\n    \"limit\": 1,\n    \"totalItems\": 1\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-datasets-and-runs-json-01-response",
                  "originalRequest": {
                    "name": "List dataset runs",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists past runs against a dataset.\n\nUses cursorPage. Dataset-name resolution currently searches only the first dataset page. Item-count enrichment is bounded and can leave zero after failure; a zero count does not prove that no items ran.\n\n## Named request examples\n\n### evals-listDatasetRuns-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetName\": \"example\"\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-06-request\n\nGuide request for 5. Decide whether the change fixes the problem without regressions. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetName\": \"support-assistant-regressions\",\n  \"pageSize\": 25\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-dataset-runs",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-dataset-runs"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetName\": \"example\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runs\": [\n    {\n      \"runId\": \"run_0912\",\n      \"name\": \"2026-08-12-candidate\",\n      \"datasetId\": \"ds_771\",\n      \"description\": \"profile revision and qualified model recorded in manifest\",\n      \"itemCount\": 120,\n      \"createdAt\": \"2026-08-12T18:00:00Z\"\n    }\n  ],\n  \"cursorPage\": {\n    \"limit\": 25\n  }\n}"
                }
              ]
            },
            {
              "name": "Record a dataset run",
              "request": {
                "name": "Record a dataset run",
                "description": {
                  "type": "text/markdown",
                  "content": "Registers a run and the supplied dataset-item/trace references. This call does not execute the dataset, create its scores, or enforce expected-output eligibility. `profileRevisionHash` is caller-supplied provenance; it does not prove a complete resolved configuration or deterministic replay.\n\nThis operation associates traces after they have been recorded, only where the evaluation configuration supports that workflow. Other configurations can return HTTP 200 without creating those associations. Inspect the run and expected items before treating it as recorded. This reference does not yet document experiment-context input on message requests.\n\n## Named request examples\n\n### evals-recordDatasetRun-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetId\": \"example_123\",\n  \"runName\": \"example\",\n  \"items\": [\n    {\n      \"datasetItemId\": \"example_123\",\n      \"traceId\": \"example_123\"\n    }\n  ]\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-05-request\n\nGuide request for 4. Run both configurations and retain their outcomes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetId\": \"support-assistant-regressions\",\n  \"runName\": \"nightly-2026-08-14\",\n  \"profileRevisionHash\": \"a1b2c3…\",\n  \"items\": [\n    {\n      \"datasetItemId\": \"di_001\",\n      \"traceId\": \"trc_a1b2c3\"\n    }\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/record-dataset-run",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "record-dataset-run"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"datasetId\": \"example_123\",\n  \"runName\": \"example\",\n  \"items\": [\n    {\n      \"datasetItemId\": \"example_123\",\n      \"traceId\": \"example_123\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-recordDatasetRun-response",
                  "originalRequest": {
                    "name": "Record a dataset run",
                    "description": {
                      "type": "text/markdown",
                      "content": "Registers a run and the supplied dataset-item/trace references. This call does not execute the dataset, create its scores, or enforce expected-output eligibility. `profileRevisionHash` is caller-supplied provenance; it does not prove a complete resolved configuration or deterministic replay.\n\nThis operation associates traces after they have been recorded, only where the evaluation configuration supports that workflow. Other configurations can return HTTP 200 without creating those associations. Inspect the run and expected items before treating it as recorded. This reference does not yet document experiment-context input on message requests.\n\n## Named request examples\n\n### evals-recordDatasetRun-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"datasetId\": \"example_123\",\n  \"runName\": \"example\",\n  \"items\": [\n    {\n      \"datasetItemId\": \"example_123\",\n      \"traceId\": \"example_123\"\n    }\n  ]\n}\n\n```\n\n### cookbook-insights-evaluation-datasets-and-runs-05-request\n\nGuide request for 4. Run both configurations and retain their outcomes. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"datasetId\": \"support-assistant-regressions\",\n  \"runName\": \"nightly-2026-08-14\",\n  \"profileRevisionHash\": \"a1b2c3…\",\n  \"items\": [\n    {\n      \"datasetItemId\": \"di_001\",\n      \"traceId\": \"trc_a1b2c3\"\n    }\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/record-dataset-run",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "record-dataset-run"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"datasetId\": \"example_123\",\n  \"runName\": \"example\",\n  \"items\": [\n    {\n      \"datasetItemId\": \"example_123\",\n      \"traceId\": \"example_123\"\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"runId\": \"example_123\"\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Annotation queues",
          "description": {
            "content": "Queue items for human review and mark them done.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Complete an annotation queue item",
              "request": {
                "name": "Complete an annotation queue item",
                "description": {
                  "type": "text/markdown",
                  "content": "Marks an annotation queue item completed. The immediate response can contain\n[`completedBy`](/api/models/annotation-queue-item#response-field-completedby), but\nthe current API does not persist that attribution for later list reads. Do not use\nthis response alone as a durable reviewer audit record.\n\n## Named request examples\n\n### evals-completeAnnotationQueueItem-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\",\n  \"itemId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-07-request\n\nGuide request for 4. Complete the saved review. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"itemId\": \"qi_001\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/complete-annotation-queue-item",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "complete-annotation-queue-item"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"queueId\": \"example_123\",\n  \"itemId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-completeAnnotationQueueItem-response",
                  "originalRequest": {
                    "name": "Complete an annotation queue item",
                    "description": {
                      "type": "text/markdown",
                      "content": "Marks an annotation queue item completed. The immediate response can contain\n[`completedBy`](/api/models/annotation-queue-item#response-field-completedby), but\nthe current API does not persist that attribution for later list reads. Do not use\nthis response alone as a durable reviewer audit record.\n\n## Named request examples\n\n### evals-completeAnnotationQueueItem-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\",\n  \"itemId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-07-request\n\nGuide request for 4. Complete the saved review. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"itemId\": \"qi_001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/complete-annotation-queue-item",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "complete-annotation-queue-item"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"queueId\": \"example_123\",\n  \"itemId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"item\": {\n    \"itemId\": \"example_123\",\n    \"queueId\": \"example_123\",\n    \"objectId\": \"example_123\",\n    \"objectType\": \"EVAL_TARGET_TYPE_TRACE\",\n    \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_PENDING\",\n    \"completedAt\": \"2026-09-16T12:00:00Z\",\n    \"completedBy\": \"example\",\n    \"createdAt\": \"2026-09-16T12:00:00Z\"\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-review-json-02-response",
                  "originalRequest": {
                    "name": "Complete an annotation queue item",
                    "description": {
                      "type": "text/markdown",
                      "content": "Marks an annotation queue item completed. The immediate response can contain\n[`completedBy`](/api/models/annotation-queue-item#response-field-completedby), but\nthe current API does not persist that attribution for later list reads. Do not use\nthis response alone as a durable reviewer audit record.\n\n## Named request examples\n\n### evals-completeAnnotationQueueItem-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\",\n  \"itemId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-07-request\n\nGuide request for 4. Complete the saved review. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"itemId\": \"qi_001\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/complete-annotation-queue-item",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "complete-annotation-queue-item"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"queueId\": \"example_123\",\n  \"itemId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"item\": {\n    \"itemId\": \"qi_001\",\n    \"queueId\": \"q_weekly\",\n    \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_COMPLETED\",\n    \"completedAt\": \"2026-08-12T17:14:22Z\",\n    \"completedBy\": \"reviewer_9\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Create an annotation queue",
              "request": {
                "name": "Create an annotation queue",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a review queue bound to a set of score configs — the scales reviewers will use on it.\n\n## Named request examples\n\n### evals-createAnnotationQueue-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"name\": \"example\",\n  \"scoreConfigIds\": [\n    \"example_123\"\n  ]\n}\n\n```\n\n### cookbook-insights-evaluation-review-02-request\n\nGuide request for 2. Queue what needs reviewing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"weekly-qa\",\n  \"scoreConfigIds\": [\n    \"cfg_helpfulness\"\n  ]\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/create-annotation-queue",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "create-annotation-queue"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"example\",\n  \"scoreConfigIds\": [\n    \"example_123\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-createAnnotationQueue-response",
                  "originalRequest": {
                    "name": "Create an annotation queue",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a review queue bound to a set of score configs — the scales reviewers will use on it.\n\n## Named request examples\n\n### evals-createAnnotationQueue-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"name\": \"example\",\n  \"scoreConfigIds\": [\n    \"example_123\"\n  ]\n}\n\n```\n\n### cookbook-insights-evaluation-review-02-request\n\nGuide request for 2. Queue what needs reviewing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"name\": \"weekly-qa\",\n  \"scoreConfigIds\": [\n    \"cfg_helpfulness\"\n  ]\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/create-annotation-queue",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "create-annotation-queue"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"name\": \"example\",\n  \"scoreConfigIds\": [\n    \"example_123\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"queueId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "Enqueue an item for annotation",
              "request": {
                "name": "Enqueue an item for annotation",
                "description": {
                  "type": "text/markdown",
                  "content": "Adds a trace, observation or session to a review queue.\n\n## Named request examples\n\n### evals-enqueueForAnnotation-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-03-request\n\nGuide request for 2. Queue what needs reviewing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"trc_a1b2c3\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/enqueue-for-annotation",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "enqueue-for-annotation"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"queueId\": \"example_123\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-enqueueForAnnotation-response",
                  "originalRequest": {
                    "name": "Enqueue an item for annotation",
                    "description": {
                      "type": "text/markdown",
                      "content": "Adds a trace, observation or session to a review queue.\n\n## Named request examples\n\n### evals-enqueueForAnnotation-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-03-request\n\nGuide request for 2. Queue what needs reviewing. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"trc_a1b2c3\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/enqueue-for-annotation",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "enqueue-for-annotation"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"queueId\": \"example_123\",\n  \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n  \"targetId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"queueItemId\": \"example_123\"\n}"
                }
              ]
            },
            {
              "name": "List annotation queue items",
              "request": {
                "name": "List annotation queue items",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists annotation queue items.\n\n### Reading an item\n\nFor a trace item, pass [`objectId`](/api/models/annotation-queue-item#response-field-objectid) to [get-trace](/api/evals/get-trace). Other target kinds need their matching read operation.\n\n## Named request examples\n\n### evals-listAnnotationQueueItems-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-04-request\n\nGuide request for Pull the worklist. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_PENDING\",\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-annotation-queue-items",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-annotation-queue-items"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"queueId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listAnnotationQueueItems-response",
                  "originalRequest": {
                    "name": "List annotation queue items",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists annotation queue items.\n\n### Reading an item\n\nFor a trace item, pass [`objectId`](/api/models/annotation-queue-item#response-field-objectid) to [get-trace](/api/evals/get-trace). Other target kinds need their matching read operation.\n\n## Named request examples\n\n### evals-listAnnotationQueueItems-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-04-request\n\nGuide request for Pull the worklist. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_PENDING\",\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-annotation-queue-items",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-annotation-queue-items"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"queueId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"items\": [\n    {\n      \"itemId\": \"example_123\",\n      \"queueId\": \"example_123\",\n      \"objectId\": \"example_123\",\n      \"objectType\": \"EVAL_TARGET_TYPE_TRACE\",\n      \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_PENDING\",\n      \"completedAt\": \"2026-09-16T12:00:00Z\",\n      \"completedBy\": \"example\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 1,\n    \"totalItems\": 1,\n    \"totalPages\": 1\n  }\n}"
                },
                {
                  "name": "cookbook-insights-evaluation-review-json-01-response",
                  "originalRequest": {
                    "name": "List annotation queue items",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists annotation queue items.\n\n### Reading an item\n\nFor a trace item, pass [`objectId`](/api/models/annotation-queue-item#response-field-objectid) to [get-trace](/api/evals/get-trace). Other target kinds need their matching read operation.\n\n## Named request examples\n\n### evals-listAnnotationQueueItems-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"queueId\": \"example_123\"\n}\n\n```\n\n### cookbook-insights-evaluation-review-04-request\n\nGuide request for Pull the worklist. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"queueId\": \"q_weekly\",\n  \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_PENDING\",\n  \"page\": 1,\n  \"pageSize\": 20\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-annotation-queue-items",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-annotation-queue-items"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"queueId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"items\": [\n    {\n      \"itemId\": \"qi_001\",\n      \"queueId\": \"q_weekly\",\n      \"objectType\": \"EVAL_TARGET_TYPE_TRACE\",\n      \"objectId\": \"trc_a1b2c3\",\n      \"status\": \"ANNOTATION_QUEUE_ITEM_STATUS_PENDING\",\n      \"createdAt\": \"2026-08-12T17:00:00Z\"\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 20,\n    \"totalItems\": 34,\n    \"totalPages\": 2\n  }\n}"
                }
              ]
            },
            {
              "name": "List annotation queues",
              "request": {
                "name": "List annotation queues",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the review queues defined for this tenant.\n\n## Named request examples\n\n### evals-listAnnotationQueues-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/list-annotation-queues",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "list-annotation-queues"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-listAnnotationQueues-response",
                  "originalRequest": {
                    "name": "List annotation queues",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the review queues defined for this tenant.\n\n## Named request examples\n\n### evals-listAnnotationQueues-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/list-annotation-queues",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "list-annotation-queues"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"queues\": [\n    {\n      \"queueId\": \"example_123\",\n      \"name\": \"example\",\n      \"description\": \"example\",\n      \"scoreConfigIds\": [\n        \"example_123\"\n      ],\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\",\n      \"pendingCount\": 1,\n      \"completedCount\": 1\n    }\n  ],\n  \"page\": {\n    \"page\": 1,\n    \"limit\": 1,\n    \"totalItems\": 1,\n    \"totalPages\": 1\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        },
        {
          "name": "Overview",
          "description": {
            "content": "Aggregate counts and score averages for a time window.",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "Get the eval overview",
              "request": {
                "name": "Get the eval overview",
                "description": {
                  "type": "text/markdown",
                  "content": "Aggregate trace counts, score averages and totals for a time window — the numbers behind a dashboard.\n\nCoverage and profile cards use the first 100 roots/scores, while volume metrics can describe a larger population. Observation-targeted scores are not counted as trace coverage. A profile filter does not establish a consistent denominator for every card; do not use these mixed populations as a release gate.\n\n### Overview populations and configuration identity\n\nInterpret quality alongside a fixed dataset's eligible, evaluated, failed and excluded cases; sampled coverage is not the proportion of every turn reviewed.\n\nSave the full configuration in the [regression workflow](/insights/evaluation/datasets-and-runs#4-record-the-run) before attributing a difference to one change.\n\n## Named request examples\n\n### evals-getOverview-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/evals/get-overview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "evals",
                    "get-overview"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "evals-getOverview-response",
                  "originalRequest": {
                    "name": "Get the eval overview",
                    "description": {
                      "type": "text/markdown",
                      "content": "Aggregate trace counts, score averages and totals for a time window — the numbers behind a dashboard.\n\nCoverage and profile cards use the first 100 roots/scores, while volume metrics can describe a larger population. Observation-targeted scores are not counted as trace coverage. A profile filter does not establish a consistent denominator for every card; do not use these mixed populations as a release gate.\n\n### Overview populations and configuration identity\n\nInterpret quality alongside a fixed dataset's eligible, evaluated, failed and excluded cases; sampled coverage is not the proportion of every turn reviewed.\n\nSave the full configuration in the [regression workflow](/insights/evaluation/datasets-and-runs#4-record-the-run) before attributing a difference to one change.\n\n## Named request examples\n\n### evals-getOverview-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/evals/get-overview",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "evals",
                        "get-overview"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"overview\": {\n    \"totalTraces\": \"1\",\n    \"tracesByName\": [\n      {\n        \"name\": \"example\",\n        \"count\": \"1\"\n      }\n    ],\n    \"tracesOverTime\": [\n      {\n        \"value\": 1,\n        \"series\": \"example\"\n      }\n    ],\n    \"observationsByLevel\": [\n      {\n        \"value\": 1,\n        \"series\": \"example\"\n      }\n    ],\n    \"scores\": [\n      {\n        \"name\": \"example\",\n        \"source\": \"SCORE_SOURCE_JUDGE\",\n        \"count\": \"1\",\n        \"average\": 1\n      }\n    ],\n    \"scoreMovingAverage\": [\n      {\n        \"value\": 1,\n        \"series\": \"example\"\n      }\n    ],\n    \"scoredTraceRatio\": 1,\n    \"annotatedTraceCount\": \"1\",\n    \"byProfile\": [\n      {\n        \"profileId\": \"example_123\",\n        \"traceCount\": \"1\",\n        \"avgEndUserRating\": 1,\n        \"avgJudgeScore\": 1,\n        \"thumbsDownCount\": \"1\"\n      }\n    ],\n    \"latencyPercentiles\": [\n      {\n        \"traceName\": \"example\",\n        \"p50\": 1,\n        \"p90\": 1,\n        \"p95\": 1,\n        \"p99\": 1\n      }\n    ],\n    \"recentLowScores\": [\n      {\n        \"scoreId\": \"example_123\",\n        \"targetType\": \"EVAL_TARGET_TYPE_TRACE\",\n        \"targetId\": \"example_123\",\n        \"name\": \"example\",\n        \"dataType\": \"SCORE_DATA_TYPE_NUMERIC\",\n        \"numericValue\": 1,\n        \"stringValue\": \"example\",\n        \"booleanValue\": true,\n        \"source\": \"SCORE_SOURCE_JUDGE\",\n        \"comment\": \"example\",\n        \"textValue\": \"Example text\",\n        \"authorUserId\": \"example_123\",\n        \"configId\": \"example_123\",\n        \"queueId\": \"example_123\",\n        \"traceId\": \"example_123\",\n        \"observationId\": \"example_123\",\n        \"sessionId\": \"example_123\",\n        \"datasetRunId\": \"example_123\",\n        \"environment\": \"example\",\n        \"metadataJson\": \"{}\",\n        \"traceName\": \"example\",\n        \"userId\": \"example_123\",\n        \"sourceLabel\": \"example\",\n        \"conversationId\": \"example_123\",\n        \"messageId\": \"example_123\",\n        \"messageSequence\": \"1\",\n        \"profileId\": \"example_123\",\n        \"configHash\": \"example\"\n      }\n    ]\n  }\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Third-Party Integrations APIs",
      "description": "Connect end-user accounts through the optional hosted Pipedream integration. This API requires Pipedream Connect to be enabled for your account.\n\n<span id=\"everything-is-scoped-to-the-calling-user\"></span>\n\nUser-facing calls act for the authenticated beneficiary. A backend `sk_…` key uses an authorized `X-On-Behalf-Of` selection with `users:impersonate`; a client `pk_…` key accompanies that user’s JWT from the configured issuer. Never expose a secret key in a client. Raw identity headers and recipient IDs are not authentication. See [Authentication](/core-platform/identity-access/authentication).\n\nTenant context comes from the authenticated request. Client-supplied `X-Tenant-Id`, `X-User-Id` or `X-Project-Id` are not an authorization mechanism. The current public integration uses the `default` project. Do not rely on project headers for separate project, test/live or customer isolation on this API.\n\nA completed redirect is not proof of a connected, authorized account. Reconcile the current connection attempt and returned account state. Multiple accounts can exist for one app. A healthy connection does not replace the user’s consent for an action.\n\n**Related guide:** [Connected accounts](/integrations/tools-connections/connected-apps)\n\n<span id=\"field-naming\"></span>\n\n<span id=\"pagination\"></span>\n\n### JSON conventions\n\nRequests accept `snake_case` or `camelCase` field names; responses use `camelCase`. Ordinary default-valued scalars and empty repeated fields can be omitted. Explicitly present optional scalars, map values and well-known JSON types follow their own presence rules: an explicit `false`, `0` or empty value is not universally equivalent to absence. Decode each field according to its schema. 64-bit integers use JSON strings; preserve their precision. Unknown request fields are generally discarded before validation, so a typo can silently change behavior. This is not a guarantee that arbitrary fields or future client contracts are supported. See [API conventions](/api).\n",
      "item": [
        {
          "name": "Pipedream",
          "description": {
            "content": "Connect a user's own third-party accounts through\n[Pipedream Connect](https://pipedream.com/docs/connect/), and manage what they have\nconnected. The arc is: browse the catalog (public data, readable before anyone has\nconnected anything), mint a short-lived hosted link the user opens to authorize one\napp, then read and remove the accounts that came out of it — including whole-user\noffboarding.\n",
            "type": "text/markdown"
          },
          "item": [
            {
              "name": "List connectable apps",
              "request": {
                "name": "List connectable apps",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the apps a user can connect, newest catalog first unless you sort. Use this to\nbuild an app picker.\n\nThis is public catalog data. It does not tell you what the caller has already\nconnected; use [`list-accounts`](/api/connected-apps/pipedream-list-accounts-for-current-user)\nfor that.\n\n## Named request examples\n\n### connected-apps-pipedreamListApps-request\n\nList available connected-app integrations with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-01-request\n\nGuide request for Find Google Calendar in the catalog. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"q\": \"cal\",\n  \"sortKey\": \"APP_SORT_KEY_FEATURED_WEIGHT\",\n  \"sortDirection\": \"SORT_DIRECTION_DESC\",\n  \"limit\": 20\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-apps",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "list-apps"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamListApps-response",
                  "originalRequest": {
                    "name": "List connectable apps",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the apps a user can connect, newest catalog first unless you sort. Use this to\nbuild an app picker.\n\nThis is public catalog data. It does not tell you what the caller has already\nconnected; use [`list-accounts`](/api/connected-apps/pipedream-list-accounts-for-current-user)\nfor that.\n\n## Named request examples\n\n### connected-apps-pipedreamListApps-request\n\nList available connected-app integrations with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-01-request\n\nGuide request for Find Google Calendar in the catalog. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"q\": \"cal\",\n  \"sortKey\": \"APP_SORT_KEY_FEATURED_WEIGHT\",\n  \"sortDirection\": \"SORT_DIRECTION_DESC\",\n  \"limit\": 20\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-apps",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "list-apps"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "A page of apps",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": \"example_123\",\n      \"nameSlug\": \"example\",\n      \"name\": \"example\",\n      \"authType\": \"AUTH_TYPE_KEYS\",\n      \"description\": \"example\",\n      \"imgSrc\": \"example\",\n      \"customFieldsJson\": \"{}\",\n      \"categories\": [\n        \"example\"\n      ],\n      \"featuredWeight\": 1\n    }\n  ],\n  \"pageInfo\": {\n    \"count\": 1,\n    \"totalCount\": 1,\n    \"startCursor\": \"example\",\n    \"endCursor\": \"example\"\n  }\n}"
                },
                {
                  "name": "cookbook-integrations-tools-connections-connected-apps-json-01-response",
                  "originalRequest": {
                    "name": "List connectable apps",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the apps a user can connect, newest catalog first unless you sort. Use this to\nbuild an app picker.\n\nThis is public catalog data. It does not tell you what the caller has already\nconnected; use [`list-accounts`](/api/connected-apps/pipedream-list-accounts-for-current-user)\nfor that.\n\n## Named request examples\n\n### connected-apps-pipedreamListApps-request\n\nList available connected-app integrations with default paging.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-01-request\n\nGuide request for Find Google Calendar in the catalog. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"q\": \"cal\",\n  \"sortKey\": \"APP_SORT_KEY_FEATURED_WEIGHT\",\n  \"sortDirection\": \"SORT_DIRECTION_DESC\",\n  \"limit\": 20\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-apps",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "list-apps"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "A page of apps",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": \"app_1Q5hjR\",\n      \"nameSlug\": \"google_calendar\",\n      \"name\": \"Google Calendar\",\n      \"imgSrc\": \"https://assets.pipedream.net/s.v0/app_1Q5hjR/logo/orig\",\n      \"authType\": \"AUTH_TYPE_OAUTH\",\n      \"categories\": [\n        \"Productivity\"\n      ],\n      \"featuredWeight\": 12\n    }\n  ],\n  \"pageInfo\": {\n    \"count\": 1,\n    \"totalCount\": 34,\n    \"endCursor\": \"Y3Vyc29yOjE=\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Retrieve one app by slug",
              "request": {
                "name": "Retrieve one app by slug",
                "description": {
                  "type": "text/markdown",
                  "content": "Returns a single app by its `nameSlug` — the stable identifier used everywhere else\nin this API (`github`, `slack`, `google_calendar`). Use it to render an app detail\npage without paging the whole catalog.\n\n## Named request examples\n\n### connected-apps-pipedreamRetrieveApp-request\n\nLook up the GitHub app before starting a connection.\n\n```json\n\n{\n  \"nameSlug\": \"github\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/retrieve-app",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "retrieve-app"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"nameSlug\": \"github\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamRetrieveApp-response",
                  "originalRequest": {
                    "name": "Retrieve one app by slug",
                    "description": {
                      "type": "text/markdown",
                      "content": "Returns a single app by its `nameSlug` — the stable identifier used everywhere else\nin this API (`github`, `slack`, `google_calendar`). Use it to render an app detail\npage without paging the whole catalog.\n\n## Named request examples\n\n### connected-apps-pipedreamRetrieveApp-request\n\nLook up the GitHub app before starting a connection.\n\n```json\n\n{\n  \"nameSlug\": \"github\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/retrieve-app",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "retrieve-app"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"nameSlug\": \"github\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "The app",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"app\": {\n    \"id\": \"example_123\",\n    \"nameSlug\": \"example\",\n    \"name\": \"example\",\n    \"authType\": \"AUTH_TYPE_KEYS\",\n    \"description\": \"example\",\n    \"imgSrc\": \"example\",\n    \"customFieldsJson\": \"{}\",\n    \"categories\": [\n      \"example\"\n    ],\n    \"featuredWeight\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "List app categories",
              "request": {
                "name": "List app categories",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists the categories apps are grouped under (\"Developer Tools\", \"Communication\").\nFeed the returned `id` values into `categoryIds` on\n[`list-apps`](/api/connected-apps/pipedream-list-apps) to filter a picker by category.\n\n## Named request examples\n\n### connected-apps-pipedreamListAppCategories-request\n\nList connected-app categories; this request has no selection fields.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-app-categories",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "list-app-categories"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamListAppCategories-response",
                  "originalRequest": {
                    "name": "List app categories",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists the categories apps are grouped under (\"Developer Tools\", \"Communication\").\nFeed the returned `id` values into `categoryIds` on\n[`list-apps`](/api/connected-apps/pipedream-list-apps) to filter a picker by category.\n\n## Named request examples\n\n### connected-apps-pipedreamListAppCategories-request\n\nList connected-app categories; this request has no selection fields.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-app-categories",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "list-app-categories"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "A page of categories",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": \"example_123\",\n      \"nameSlug\": \"example\",\n      \"name\": \"example\"\n    }\n  ],\n  \"pageInfo\": {\n    \"count\": 1,\n    \"totalCount\": 1,\n    \"startCursor\": \"example\",\n    \"endCursor\": \"example\"\n  }\n}"
                }
              ]
            },
            {
              "name": "Start connecting an app",
              "request": {
                "name": "Start connecting an app",
                "description": {
                  "type": "text/markdown",
                  "content": "Creates a hosted connection attempt targeted by `appSlug` and returns its complete connect URL. Validate the parsed URL against the expected provider origin and path for the current attempt, then use it without reconstructing its token query. Treat the URL as a short-lived credential; read `expiresAt`, avoid caching/sharing it, and create a fresh attempt when appropriate. Do not assume a specific lifetime or single-use property unless qualified for the deployed provider.\n\nFor embedding, configure exact `allowedOrigins`. Correlate the returned state with the attempt initiated by this user; returned state is not authority. A redirect does not establish success: reconcile `list-accounts` and provider errors.\n\n## Named request examples\n\n### connected-apps-pipedreamCreateConnectToken-request\n\nCreate a connection token for the authenticated end user using the configured provider defaults.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-02-request\n\nGuide request for Create the authorization link when the customer clicks Connect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"appSlug\": \"google_calendar\",\n  \"successRedirectUrl\": \"https://app.example.com/integrations?ok=1\",\n  \"errorRedirectUrl\": \"https://app.example.com/integrations?ok=0\",\n  \"state\": \"picker-session-8f3a\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/create-connect-token",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "create-connect-token"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamCreateConnectToken-response",
                  "originalRequest": {
                    "name": "Start connecting an app",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a hosted connection attempt targeted by `appSlug` and returns its complete connect URL. Validate the parsed URL against the expected provider origin and path for the current attempt, then use it without reconstructing its token query. Treat the URL as a short-lived credential; read `expiresAt`, avoid caching/sharing it, and create a fresh attempt when appropriate. Do not assume a specific lifetime or single-use property unless qualified for the deployed provider.\n\nFor embedding, configure exact `allowedOrigins`. Correlate the returned state with the attempt initiated by this user; returned state is not authority. A redirect does not establish success: reconcile `list-accounts` and provider errors.\n\n## Named request examples\n\n### connected-apps-pipedreamCreateConnectToken-request\n\nCreate a connection token for the authenticated end user using the configured provider defaults.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-02-request\n\nGuide request for Create the authorization link when the customer clicks Connect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"appSlug\": \"google_calendar\",\n  \"successRedirectUrl\": \"https://app.example.com/integrations?ok=1\",\n  \"errorRedirectUrl\": \"https://app.example.com/integrations?ok=0\",\n  \"state\": \"picker-session-8f3a\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/create-connect-token",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "create-connect-token"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Connect token and hosted link",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"token\": \"example\",\n  \"connectLinkUrl\": \"https://example.com/resource\",\n  \"expiresAt\": \"2026-09-16T12:00:00Z\"\n}"
                },
                {
                  "name": "cookbook-integrations-tools-connections-connected-apps-json-02-response",
                  "originalRequest": {
                    "name": "Start connecting an app",
                    "description": {
                      "type": "text/markdown",
                      "content": "Creates a hosted connection attempt targeted by `appSlug` and returns its complete connect URL. Validate the parsed URL against the expected provider origin and path for the current attempt, then use it without reconstructing its token query. Treat the URL as a short-lived credential; read `expiresAt`, avoid caching/sharing it, and create a fresh attempt when appropriate. Do not assume a specific lifetime or single-use property unless qualified for the deployed provider.\n\nFor embedding, configure exact `allowedOrigins`. Correlate the returned state with the attempt initiated by this user; returned state is not authority. A redirect does not establish success: reconcile `list-accounts` and provider errors.\n\n## Named request examples\n\n### connected-apps-pipedreamCreateConnectToken-request\n\nCreate a connection token for the authenticated end user using the configured provider defaults.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-02-request\n\nGuide request for Create the authorization link when the customer clicks Connect. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"appSlug\": \"google_calendar\",\n  \"successRedirectUrl\": \"https://app.example.com/integrations?ok=1\",\n  \"errorRedirectUrl\": \"https://app.example.com/integrations?ok=0\",\n  \"state\": \"picker-session-8f3a\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/create-connect-token",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "create-connect-token"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Connect token and hosted link",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"token\": \"ctok_5xyz...\",\n  \"connectLinkUrl\": \"https://pipedream.com/_static/connect.html?token=ctok_5xyz...&connectLink=true&app=google_calendar\",\n  \"expiresAt\": \"2026-08-10T10:04:11Z\"\n}"
                }
              ]
            },
            {
              "name": "List the caller's connected accounts",
              "request": {
                "name": "List the caller's connected accounts",
                "description": {
                  "type": "text/markdown",
                  "content": "Lists connected accounts for the authenticated beneficiary. An app can have multiple accounts; select the intended account ID explicitly. `healthy === true` reflects the returned provider connection state, not current action consent or authorization. An unhealthy account can need reconnection. The response does not directly return the stored third-party credential. Continue using provider pagination rather than treating an empty data page alone as exhaustion.\n\n## Named request examples\n\n### connected-apps-pipedreamListAccountsForCurrentUser-request\n\nList accounts belonging to the authenticated end user.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-03-request\n\nGuide request for Confirm the account before showing Connected. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"app\": \"google_calendar\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-accounts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "list-accounts"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamListAccountsForCurrentUser-response",
                  "originalRequest": {
                    "name": "List the caller's connected accounts",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists connected accounts for the authenticated beneficiary. An app can have multiple accounts; select the intended account ID explicitly. `healthy === true` reflects the returned provider connection state, not current action consent or authorization. An unhealthy account can need reconnection. The response does not directly return the stored third-party credential. Continue using provider pagination rather than treating an empty data page alone as exhaustion.\n\n## Named request examples\n\n### connected-apps-pipedreamListAccountsForCurrentUser-request\n\nList accounts belonging to the authenticated end user.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-03-request\n\nGuide request for Confirm the account before showing Connected. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"app\": \"google_calendar\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-accounts",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "list-accounts"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "A page of the caller's connected accounts",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": \"example_123\",\n      \"name\": \"example\",\n      \"externalUserId\": \"example_123\",\n      \"healthy\": true,\n      \"app\": \"example\",\n      \"oauthAppId\": \"example_123\",\n      \"createdAt\": \"2026-09-16T12:00:00Z\",\n      \"updatedAt\": \"2026-09-16T12:00:00Z\",\n      \"credentialsLastRefreshedAt\": \"2026-09-16T12:00:00Z\",\n      \"credentialsExpiresAt\": \"2026-09-16T12:00:00Z\",\n      \"error\": \"example\",\n      \"lastRefreshedAt\": \"2026-09-16T12:00:00Z\",\n      \"nextRefreshAt\": \"2026-09-16T12:00:00Z\"\n    }\n  ],\n  \"pageInfo\": {\n    \"count\": 1,\n    \"totalCount\": 1,\n    \"startCursor\": \"example\",\n    \"endCursor\": \"example\"\n  }\n}"
                },
                {
                  "name": "cookbook-integrations-tools-connections-connected-apps-json-03-response",
                  "originalRequest": {
                    "name": "List the caller's connected accounts",
                    "description": {
                      "type": "text/markdown",
                      "content": "Lists connected accounts for the authenticated beneficiary. An app can have multiple accounts; select the intended account ID explicitly. `healthy === true` reflects the returned provider connection state, not current action consent or authorization. An unhealthy account can need reconnection. The response does not directly return the stored third-party credential. Continue using provider pagination rather than treating an empty data page alone as exhaustion.\n\n## Named request examples\n\n### connected-apps-pipedreamListAccountsForCurrentUser-request\n\nList accounts belonging to the authenticated end user.\n\n```json\n\n{}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-03-request\n\nGuide request for Confirm the account before showing Connected. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"app\": \"google_calendar\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/list-accounts",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "list-accounts"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "A page of the caller's connected accounts",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": \"apn_kAHeAr9\",\n      \"name\": \"user@example.com\",\n      \"app\": \"google_calendar\",\n      \"healthy\": true,\n      \"createdAt\": \"2026-08-10T09:14:52Z\"\n    }\n  ],\n  \"pageInfo\": {\n    \"count\": 1,\n    \"totalCount\": 1\n  }\n}"
                }
              ]
            },
            {
              "name": "Disconnect one account",
              "request": {
                "name": "Disconnect one account",
                "description": {
                  "type": "text/markdown",
                  "content": "Disconnects the specified account belonging to the authenticated beneficiary. An account outside that scope is returned as not found. Reconcile uncertain responses before recreating it. Disconnection does not undo already dispatched actions or establish that all provider sessions and copies have been erased immediately.\n\n## Named request examples\n\n### connected-apps-pipedreamDeleteAccountForCurrentUser-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"accountId\": \"example_123\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-05-request\n\nGuide request for Disconnect the selected calendar. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"accountId\": \"apn_kAHeAr9\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/delete-account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "delete-account"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"accountId\": \"example_123\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamDeleteAccountForCurrentUser-response",
                  "originalRequest": {
                    "name": "Disconnect one account",
                    "description": {
                      "type": "text/markdown",
                      "content": "Disconnects the specified account belonging to the authenticated beneficiary. An account outside that scope is returned as not found. Reconcile uncertain responses before recreating it. Disconnection does not undo already dispatched actions or establish that all provider sessions and copies have been erased immediately.\n\n## Named request examples\n\n### connected-apps-pipedreamDeleteAccountForCurrentUser-request\n\nSchema-valid request illustration; replace example identifiers and confirm operation prerequisites.\n\n```json\n\n{\n  \"accountId\": \"example_123\"\n}\n\n```\n\n### cookbook-integrations-tools-connections-connected-apps-05-request\n\nGuide request for Disconnect the selected calendar. Replace example resource identifiers with your own authorized values.\n\n```json\n\n{\n  \"accountId\": \"apn_kAHeAr9\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/delete-account",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "delete-account"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"accountId\": \"example_123\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "Account disconnected",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true\n}"
                }
              ]
            },
            {
              "name": "Delete the caller's integration data entirely",
              "request": {
                "name": "Delete the caller's integration data entirely",
                "description": {
                  "type": "text/markdown",
                  "content": "Requests irreversible deletion of the authenticated beneficiary's Pipedream external\nuser and associated connections. Use it as one step of offboarding, not as proof\nof erasure across every provider and backup. Reconnection creates new connection\nstate and requires fresh user authorization.\n\n[`accountsDeleted`](/api/connected-apps/pipedream-delete-external-user-for-current-user#response-field-accountsdeleted)\nis counted immediately before deletion and can differ under concurrent changes;\nit is not a per-account deletion receipt. Preserve your application's record of\ncleanup and unresolved external actions.\n\n## Named request examples\n\n### connected-apps-pipedreamDeleteExternalUserForCurrentUser-request\n\nDelete the external connected-app user selected by authentication; no user identifier is accepted in this body.\n\n```json\n\n{}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/delete-external-user",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "delete-external-user"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamDeleteExternalUserForCurrentUser-response",
                  "originalRequest": {
                    "name": "Delete the caller's integration data entirely",
                    "description": {
                      "type": "text/markdown",
                      "content": "Requests irreversible deletion of the authenticated beneficiary's Pipedream external\nuser and associated connections. Use it as one step of offboarding, not as proof\nof erasure across every provider and backup. Reconnection creates new connection\nstate and requires fresh user authorization.\n\n[`accountsDeleted`](/api/connected-apps/pipedream-delete-external-user-for-current-user#response-field-accountsdeleted)\nis counted immediately before deletion and can differ under concurrent changes;\nit is not a per-account deletion receipt. Preserve your application's record of\ncleanup and unresolved external actions.\n\n## Named request examples\n\n### connected-apps-pipedreamDeleteExternalUserForCurrentUser-request\n\nDelete the external connected-app user selected by authentication; no user identifier is accepted in this body.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/delete-external-user",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "delete-external-user"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "User and all their connected accounts deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true,\n  \"accountsDeleted\": 1\n}"
                },
                {
                  "name": "cookbook-integrations-tools-connections-connected-apps-json-04-response",
                  "originalRequest": {
                    "name": "Delete the caller's integration data entirely",
                    "description": {
                      "type": "text/markdown",
                      "content": "Requests irreversible deletion of the authenticated beneficiary's Pipedream external\nuser and associated connections. Use it as one step of offboarding, not as proof\nof erasure across every provider and backup. Reconnection creates new connection\nstate and requires fresh user authorization.\n\n[`accountsDeleted`](/api/connected-apps/pipedream-delete-external-user-for-current-user#response-field-accountsdeleted)\nis counted immediately before deletion and can differ under concurrent changes;\nit is not a per-account deletion receipt. Preserve your application's record of\ncleanup and unresolved external actions.\n\n## Named request examples\n\n### connected-apps-pipedreamDeleteExternalUserForCurrentUser-request\n\nDelete the external connected-app user selected by authentication; no user identifier is accepted in this body.\n\n```json\n\n{}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/delete-external-user",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "delete-external-user"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "User and all their connected accounts deleted",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"deleted\": true,\n  \"accountsDeleted\": 3\n}"
                }
              ]
            },
            {
              "name": "Call a connected app's API as the user",
              "request": {
                "name": "Call a connected app's API as the user",
                "description": {
                  "type": "text/markdown",
                  "content": "Makes an HTTP request through the selected connected account. The account must\nbelong to the effective user and the destination is subject to the provider's\nallowed-domain rules. Those checks do not replace permission for the requested\naction. Each upstream app defines its own payload.\n\n### Upstream response handling\n\nRead the returned upstream [`status`](/api/connected-apps/pipedream-proxy-for-current-user#response-field-status)\nbefore treating the operation as successful: Travila can return HTTP 200 while\nthe app's response contains a 404. Upstream headers and the\n[`body`](/api/connected-apps/pipedream-proxy-for-current-user#response-field-body) are\nreturned as data, including on non-success status codes. Decode the body according\nto its content type; headers and bodies can contain third-party sensitive data.\n\nRedirects are returned, not followed. Treat `Location` as untrusted: it need not be\na signed or credential-free download URL. Validate the destination before opening\nit and never forward platform or account credentials to it.\n\nThe provider request timeout is 30 seconds. Page large results or use an\nappropriate provider download flow to stay within the response-body limit.\nA timeout can leave the external action's outcome unknown; check that action\nbefore retrying.\n\n## Named request examples\n\n### connected-apps-pipedreamProxyForCurrentUser-request\n\nReplace accountId with the authenticated user’s connected GitHub account; request that provider’s profile endpoint.\n\n```json\n\n{\n  \"accountId\": \"apn_example\",\n  \"method\": \"GET\",\n  \"url\": \"https://api.github.com/user\"\n}\n\n```"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/integrations/pipedream/proxy",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "integrations",
                    "pipedream",
                    "proxy"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"accountId\": \"apn_example\",\n  \"method\": \"GET\",\n  \"url\": \"https://api.github.com/user\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "response": [
                {
                  "name": "connected-apps-pipedreamProxyForCurrentUser-response",
                  "originalRequest": {
                    "name": "Call a connected app's API as the user",
                    "description": {
                      "type": "text/markdown",
                      "content": "Makes an HTTP request through the selected connected account. The account must\nbelong to the effective user and the destination is subject to the provider's\nallowed-domain rules. Those checks do not replace permission for the requested\naction. Each upstream app defines its own payload.\n\n### Upstream response handling\n\nRead the returned upstream [`status`](/api/connected-apps/pipedream-proxy-for-current-user#response-field-status)\nbefore treating the operation as successful: Travila can return HTTP 200 while\nthe app's response contains a 404. Upstream headers and the\n[`body`](/api/connected-apps/pipedream-proxy-for-current-user#response-field-body) are\nreturned as data, including on non-success status codes. Decode the body according\nto its content type; headers and bodies can contain third-party sensitive data.\n\nRedirects are returned, not followed. Treat `Location` as untrusted: it need not be\na signed or credential-free download URL. Validate the destination before opening\nit and never forward platform or account credentials to it.\n\nThe provider request timeout is 30 seconds. Page large results or use an\nappropriate provider download flow to stay within the response-body limit.\nA timeout can leave the external action's outcome unknown; check that action\nbefore retrying.\n\n## Named request examples\n\n### connected-apps-pipedreamProxyForCurrentUser-request\n\nReplace accountId with the authenticated user’s connected GitHub account; request that provider’s profile endpoint.\n\n```json\n\n{\n  \"accountId\": \"apn_example\",\n  \"method\": \"GET\",\n  \"url\": \"https://api.github.com/user\"\n}\n\n```"
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v1/integrations/pipedream/proxy",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v1",
                        "integrations",
                        "pipedream",
                        "proxy"
                      ]
                    },
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Accept",
                        "value": "application/json"
                      }
                    ],
                    "method": "POST",
                    "auth": null,
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"accountId\": \"apn_example\",\n  \"method\": \"GET\",\n  \"url\": \"https://api.github.com/user\"\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    }
                  },
                  "status": "The upstream response, whatever its status",
                  "code": 200,
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"status\": 1,\n  \"headers\": {},\n  \"body\": \"ZXhhbXBsZQ==\"\n}"
                }
              ]
            }
          ],
          "event": []
        }
      ]
    }
  ]
}
