{
  "info": {
    "name": "Travila Platform API",
    "description": "Every public Travila Platform endpoint, generated from the OpenAPI specs that back\nhttps://docs.travila.ai — one folder per gateway.\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` — an end-user Firebase ID token. 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\nexception is **Authentication APIs** (key management), which takes an admin JWT and\nrefuses API keys — that folder overrides the collection and sends `jwt` instead.\n\n## Request shape\n\nAll endpoints are `POST` with a JSON body, encoded as protojson (the JSON form of the\nunderlying Protocol Buffer messages).\n\nBodies are generated from the spec schemas, so every field is present with a typed\nplaceholder (`\"<string>\"`, `\"<integer>\"`) rather than a real value — the shape is\ncorrect, the contents are not. Replace them before sending, and drop the 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/docs/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\nResponse examples are intentionally omitted — see the API reference for response\nschemas.",
    "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": "Conversational AI gateway for thread management, messaging, tool orchestration (MCP), semantic memory, and LLM proxy. (Voice sessions are in progress — not yet generally available.)\n\nCaller identity and tenant are derived from your credentials — you never pass user or tenant identifiers in the\nrequest body. See the [API Key Integration Guide](/docs/api-keys/customer-guide).\n\nAll endpoints use `POST /api/v1/llm/gateway/<method>` with a JSON request body.\n\nSee the [Conversations guide](/docs/guides/conversations) for thread lifecycle, async generation, and configuration.\nSee the [MCP Tools guide](/docs/guides/mcp-tools) for tool calling, approval flows, and client-side tools.\nSee the [Memory guide](/docs/guides/memory) for semantic memory search and conversation integration.\n",
      "item": [
        {
          "name": "Threads",
          "description": {
            "content": "Conversation containers — create and list threads. See the [Conversations guide](/docs/guides/conversations) for thread lifecycle, async generation, and configuration.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a new conversation thread",
              "request": {
                "name": "Create a new conversation thread",
                "description": {
                  "content": "Creates a new conversation thread for the authenticated user. A thread is a logical container for a conversation with its own message history, generation config, and settings.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/create-thread",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "create-thread"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"title\": \"<string>\",\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ],\n  \"active_profile_id\": \"<string>\",\n  \"default_generation_config\": {\n    \"model\": \"<string>\",\n    \"models\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"system_prompt\": \"<string>\",\n    \"model_routing_filter\": {\n      \"min_context_length\": \"<long>\",\n      \"min_max_completion_tokens\": \"<long>\",\n      \"required_input_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"required_output_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_prompt_cost\": \"<double>\",\n      \"max_completion_cost\": \"<double>\",\n      \"exclude_moderated\": \"<boolean>\",\n      \"required_parameters\": [\n        \"<string>\",\n        \"<string>\"\n      ]\n    },\n    \"provider\": {\n      \"order\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"allow_fallbacks\": \"<boolean>\",\n      \"require_parameters\": \"<boolean>\",\n      \"data_collection\": \"<string>\",\n      \"zdr\": \"<boolean>\",\n      \"only\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"ignore\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"quantizations\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"sort\": \"<string>\",\n      \"max_price\": {\n        \"prompt\": \"<double>\",\n        \"completion\": \"<double>\",\n        \"request\": \"<double>\",\n        \"image\": \"<double>\",\n        \"audio\": \"<double>\"\n      },\n      \"enforce_distillable_text\": \"<boolean>\",\n      \"preferred_min_throughput\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      },\n      \"preferred_max_latency\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      }\n    },\n    \"reasoning\": {\n      \"effort\": \"<string>\",\n      \"max_tokens\": \"<integer>\",\n      \"exclude\": \"<boolean>\",\n      \"include_reasoning_history\": \"<boolean>\"\n    },\n    \"usage\": {\n      \"include\": \"<boolean>\"\n    },\n    \"transforms\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_choice\": {\n      \"kind\": \"<string>\",\n      \"specific_tool_name\": \"<string>\"\n    },\n    \"client_tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_policy\": {\n      \"require_approval_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"require_approval_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"approval_mode\": \"<string>\",\n      \"client_tool_mode\": \"<string>\",\n      \"approval_timeout_ms\": \"<integer>\",\n      \"fail_on_approval_timeout_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"order_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        }\n      ],\n      \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n      \"max_parallel_tool_calls\": \"<integer>\",\n      \"max_tool_calls_per_loop\": \"<integer>\",\n      \"max_total_tool_calls\": \"<integer>\",\n      \"retriable_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_retries\": \"<integer>\",\n      \"retry_backoff\": {\n        \"initial_ms\": \"<integer>\",\n        \"multiplier\": \"<double>\",\n        \"max_ms\": \"<integer>\"\n      },\n      \"retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"non_retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"timeouts\": {\n        \"per_tool_ms\": \"<integer>\",\n        \"per_loop_ms\": \"<integer>\",\n        \"overall_ms\": \"<integer>\"\n      },\n      \"fail_on_timeout\": \"<boolean>\",\n      \"client_tool_timeout_ms\": \"<integer>\",\n      \"failure_mode\": \"<string>\",\n      \"stop_on_failure_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        }\n      ]\n    },\n    \"temperature\": \"<double>\",\n    \"top_p\": \"<double>\",\n    \"max_output_tokens\": \"<integer>\",\n    \"frequency_penalty\": \"<double>\",\n    \"presence_penalty\": \"<double>\",\n    \"stop_sequences\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"seed\": \"<long>\",\n    \"response_format\": {\n      \"json_object\": \"<boolean>\",\n      \"json_schema\": \"<object>\",\n      \"schema_name\": \"<string>\",\n      \"validate\": \"<boolean>\",\n      \"max_validation_retries\": \"<integer>\",\n      \"response_healing\": \"<boolean>\"\n    },\n    \"allow_parallel_tool_calls\": \"<boolean>\",\n    \"top_k\": \"<integer>\",\n    \"repetition_penalty\": \"<double>\",\n    \"logit_bias\": {\n      \"key_0\": \"<double>\"\n    },\n    \"top_logprobs\": \"<integer>\",\n    \"min_p\": \"<double>\",\n    \"top_a\": \"<double>\",\n    \"user\": \"<string>\",\n    \"modalities\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"plugins\": [\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"language_preference\": \"<string>\",\n    \"turn_context\": {\n      \"enabled\": \"<boolean>\",\n      \"include_tool_guidance\": \"<boolean>\",\n      \"format\": \"<string>\"\n    },\n    \"mem0\": {\n      \"enabled\": \"<boolean>\",\n      \"search_top_k\": \"<integer>\",\n      \"search_threshold\": \"<double>\",\n      \"inject_as_system_context\": \"<boolean>\",\n      \"search_query_override\": \"<string>\",\n      \"enable_rerank\": \"<boolean>\",\n      \"add_memories_async\": \"<boolean>\",\n      \"custom_extraction_prompt\": \"<string>\",\n      \"enable_graph\": \"<boolean>\",\n      \"agent_id_override\": \"<string>\",\n      \"expose_as_mcp_tool\": \"<boolean>\",\n      \"include_assistant_messages\": \"<boolean>\",\n      \"inject_memory_timestamps\": \"<boolean>\"\n    },\n    \"time_aware\": {\n      \"include_current_time\": \"<boolean>\",\n      \"include_message_timestamps\": \"<boolean>\",\n      \"include_file_timestamps\": \"<boolean>\",\n      \"timezone\": \"<string>\",\n      \"timestamp_format\": \"<string>\"\n    },\n    \"request_timeout_seconds\": \"<integer>\",\n    \"file_resolution\": {\n      \"failure_mode\": \"<string>\"\n    }\n  },\n  \"conversation_settings\": {\n    \"interrupt_policy\": \"<string>\",\n    \"max_loops\": \"<integer>\",\n    \"max_parallel_tools\": \"<integer>\",\n    \"mcp_servers\": [\n      {\n        \"server_id\": \"<string>\",\n        \"enabled\": \"<boolean>\",\n        \"priority\": \"<integer>\",\n        \"allowlist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"blocklist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"server_overrides\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"server_id\": \"<string>\",\n        \"enabled\": \"<boolean>\",\n        \"priority\": \"<integer>\",\n        \"allowlist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"blocklist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"server_overrides\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"tool_policy\": {\n      \"require_approval_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"require_approval_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"approval_mode\": \"<string>\",\n      \"client_tool_mode\": \"<string>\",\n      \"approval_timeout_ms\": \"<integer>\",\n      \"fail_on_approval_timeout_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"order_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        }\n      ],\n      \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n      \"max_parallel_tool_calls\": \"<integer>\",\n      \"max_tool_calls_per_loop\": \"<integer>\",\n      \"max_total_tool_calls\": \"<integer>\",\n      \"retriable_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_retries\": \"<integer>\",\n      \"retry_backoff\": {\n        \"initial_ms\": \"<integer>\",\n        \"multiplier\": \"<double>\",\n        \"max_ms\": \"<integer>\"\n      },\n      \"retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"non_retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"timeouts\": {\n        \"per_tool_ms\": \"<integer>\",\n        \"per_loop_ms\": \"<integer>\",\n        \"overall_ms\": \"<integer>\"\n      },\n      \"fail_on_timeout\": \"<boolean>\",\n      \"client_tool_timeout_ms\": \"<integer>\",\n      \"failure_mode\": \"<string>\",\n      \"stop_on_failure_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        }\n      ]\n    },\n    \"prompt_variables\": \"<object>\"\n  },\n  \"context_management_settings\": {\n    \"strategy\": \"<string>\",\n    \"compaction_config\": {\n      \"mode\": \"<string>\",\n      \"threshold\": {\n        \"token_count\": \"<integer>\",\n        \"percentage\": \"<integer>\"\n      },\n      \"generation_config\": {\n        \"model\": \"<string>\",\n        \"models\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"system_prompt\": \"<string>\",\n        \"model_routing_filter\": {\n          \"min_context_length\": \"<long>\",\n          \"min_max_completion_tokens\": \"<long>\",\n          \"required_input_modalities\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"required_output_modalities\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"max_prompt_cost\": \"<double>\",\n          \"max_completion_cost\": \"<double>\",\n          \"exclude_moderated\": \"<boolean>\",\n          \"required_parameters\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"provider\": {\n          \"order\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"allow_fallbacks\": \"<boolean>\",\n          \"require_parameters\": \"<boolean>\",\n          \"data_collection\": \"<string>\",\n          \"zdr\": \"<boolean>\",\n          \"only\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"ignore\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"quantizations\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"sort\": \"<string>\",\n          \"max_price\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"enforce_distillable_text\": \"<boolean>\",\n          \"preferred_min_throughput\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"preferred_max_latency\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          }\n        },\n        \"reasoning\": {\n          \"effort\": \"<string>\",\n          \"max_tokens\": \"<integer>\",\n          \"exclude\": \"<boolean>\",\n          \"include_reasoning_history\": \"<boolean>\"\n        },\n        \"usage\": {\n          \"include\": \"<boolean>\"\n        },\n        \"transforms\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"tools\": [\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          }\n        ],\n        \"tool_choice\": {\n          \"kind\": \"<string>\",\n          \"specific_tool_name\": \"<string>\"\n        },\n        \"client_tools\": [\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          }\n        ],\n        \"tool_policy\": {\n          \"require_approval_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"require_approval_server_ids\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"auto_approve_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"auto_approve_server_ids\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"approval_mode\": \"<string>\",\n          \"client_tool_mode\": \"<string>\",\n          \"approval_timeout_ms\": \"<integer>\",\n          \"fail_on_approval_timeout_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"order_rules\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n          \"max_parallel_tool_calls\": \"<integer>\",\n          \"max_tool_calls_per_loop\": \"<integer>\",\n          \"max_total_tool_calls\": \"<integer>\",\n          \"retriable_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"max_retries\": \"<integer>\",\n          \"retry_backoff\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"retryable_error_substrings\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"non_retryable_error_substrings\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"timeouts\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"fail_on_timeout\": \"<boolean>\",\n          \"client_tool_timeout_ms\": \"<integer>\",\n          \"failure_mode\": \"<string>\",\n          \"stop_on_failure_rules\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"temperature\": \"<double>\",\n        \"top_p\": \"<double>\",\n        \"max_output_tokens\": \"<integer>\",\n        \"frequency_penalty\": \"<double>\",\n        \"presence_penalty\": \"<double>\",\n        \"stop_sequences\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"seed\": \"<long>\",\n        \"response_format\": {\n          \"json_object\": \"<boolean>\",\n          \"json_schema\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"validate\": \"<boolean>\",\n          \"max_validation_retries\": \"<integer>\",\n          \"response_healing\": \"<boolean>\"\n        },\n        \"allow_parallel_tool_calls\": \"<boolean>\",\n        \"top_k\": \"<integer>\",\n        \"repetition_penalty\": \"<double>\",\n        \"logit_bias\": {\n          \"key_0\": \"<double>\"\n        },\n        \"top_logprobs\": \"<integer>\",\n        \"min_p\": \"<double>\",\n        \"top_a\": \"<double>\",\n        \"user\": \"<string>\",\n        \"modalities\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"plugins\": [\n          {\n            \"id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"pdf\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"web\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"params\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          {\n            \"id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"pdf\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"web\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"params\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          }\n        ],\n        \"language_preference\": \"<string>\",\n        \"turn_context\": {\n          \"enabled\": \"<boolean>\",\n          \"include_tool_guidance\": \"<boolean>\",\n          \"format\": \"<string>\"\n        },\n        \"mem0\": {\n          \"enabled\": \"<boolean>\",\n          \"search_top_k\": \"<integer>\",\n          \"search_threshold\": \"<double>\",\n          \"inject_as_system_context\": \"<boolean>\",\n          \"search_query_override\": \"<string>\",\n          \"enable_rerank\": \"<boolean>\",\n          \"add_memories_async\": \"<boolean>\",\n          \"custom_extraction_prompt\": \"<string>\",\n          \"enable_graph\": \"<boolean>\",\n          \"agent_id_override\": \"<string>\",\n          \"expose_as_mcp_tool\": \"<boolean>\",\n          \"include_assistant_messages\": \"<boolean>\",\n          \"inject_memory_timestamps\": \"<boolean>\"\n        },\n        \"time_aware\": {\n          \"include_current_time\": \"<boolean>\",\n          \"include_message_timestamps\": \"<boolean>\",\n          \"include_file_timestamps\": \"<boolean>\",\n          \"timezone\": \"<string>\",\n          \"timestamp_format\": \"<string>\"\n        },\n        \"request_timeout_seconds\": \"<integer>\",\n        \"file_resolution\": {\n          \"failure_mode\": \"<string>\"\n        }\n      },\n      \"preserve_recent\": \"<integer>\"\n    },\n    \"windowing_config\": {\n      \"max_messages\": \"<integer>\"\n    },\n    \"selective_exclusion_config\": {\n      \"exclude_tool_results\": \"<boolean>\",\n      \"exclude_images\": \"<boolean>\",\n      \"exclude_files\": \"<boolean>\",\n      \"exclude_reasoning\": \"<boolean>\"\n    }\n  },\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List conversation threads",
              "request": {
                "name": "List conversation threads",
                "description": {
                  "content": "Returns a paginated list of conversation threads for the authenticated user, ordered by most recently updated.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/list-threads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "list-threads"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"limit\": \"<integer>\",\n  \"page_token\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Messages",
          "description": {
            "content": "Send messages and trigger generation. See the [Conversations guide](/docs/guides/conversations) for the full message lifecycle and async polling recipe.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Send a message to a conversation",
              "request": {
                "name": "Send a message to a conversation",
                "description": {
                  "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.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/send-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "send-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"user_message\": {\n    \"role\": \"<string>\",\n    \"content\": [\n      {\n        \"type\": \"<string>\",\n        \"content\": \"<string>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"cache_preferred\": \"<boolean>\",\n        \"structured_message\": {\n          \"json_payload\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"healed\": \"<boolean>\"\n        }\n      },\n      {\n        \"type\": \"<string>\",\n        \"content\": \"<string>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"cache_preferred\": \"<boolean>\",\n        \"structured_message\": {\n          \"json_payload\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"healed\": \"<boolean>\"\n        }\n      }\n    ],\n    \"tool_calls\": [\n      {\n        \"id\": \"<string>\",\n        \"name\": \"<string>\",\n        \"arguments_json\": \"<object>\",\n        \"status\": \"<string>\",\n        \"result_json\": \"<object>\",\n        \"executed_at\": \"<dateTime>\",\n        \"server_id\": \"<string>\",\n        \"is_client_tool\": \"<boolean>\",\n        \"requires_approval_at\": \"<dateTime>\",\n        \"approved_at\": \"<dateTime>\",\n        \"approved_by\": \"<string>\",\n        \"execution_duration\": \"<string>\"\n      },\n      {\n        \"id\": \"<string>\",\n        \"name\": \"<string>\",\n        \"arguments_json\": \"<object>\",\n        \"status\": \"<string>\",\n        \"result_json\": \"<object>\",\n        \"executed_at\": \"<dateTime>\",\n        \"server_id\": \"<string>\",\n        \"is_client_tool\": \"<boolean>\",\n        \"requires_approval_at\": \"<dateTime>\",\n        \"approved_at\": \"<dateTime>\",\n        \"approved_by\": \"<string>\",\n        \"execution_duration\": \"<string>\"\n      }\n    ],\n    \"name\": \"<string>\",\n    \"timestamp\": \"<dateTime>\",\n    \"message_id\": \"<string>\",\n    \"annotations\": [\n      {\n        \"kind\": \"<string>\",\n        \"url_citation\": {\n          \"url\": \"<string>\",\n          \"title\": \"<string>\",\n          \"content\": \"<string>\",\n          \"start_index\": \"<integer>\",\n          \"end_index\": \"<integer>\"\n        },\n        \"pdf\": {\n          \"filename\": \"<string>\",\n          \"engine\": \"<string>\",\n          \"token\": \"<string>\",\n          \"source_url\": \"<string>\",\n          \"hash\": \"<string>\",\n          \"content\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"kind\": \"<string>\",\n        \"url_citation\": {\n          \"url\": \"<string>\",\n          \"title\": \"<string>\",\n          \"content\": \"<string>\",\n          \"start_index\": \"<integer>\",\n          \"end_index\": \"<integer>\"\n        },\n        \"pdf\": {\n          \"filename\": \"<string>\",\n          \"engine\": \"<string>\",\n          \"token\": \"<string>\",\n          \"source_url\": \"<string>\",\n          \"hash\": \"<string>\",\n          \"content\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"sequence\": \"<long>\",\n    \"generated_by\": \"<string>\",\n    \"usage\": {\n      \"prompt_tokens\": \"<integer>\",\n      \"completion_tokens\": \"<integer>\",\n      \"total_tokens\": \"<integer>\",\n      \"cost_estimate\": \"<float>\",\n      \"completion_tokens_details\": {\n        \"reasoning_tokens\": \"<integer>\",\n        \"text_tokens\": \"<integer>\"\n      },\n      \"native_tokens_prompt\": \"<integer>\",\n      \"native_tokens_completion\": \"<integer>\",\n      \"prompt_tokens_details\": {\n        \"cached_tokens\": \"<integer>\",\n        \"cache_write_tokens\": \"<integer>\",\n        \"audio_tokens\": \"<integer>\",\n        \"video_tokens\": \"<integer>\"\n      },\n      \"cost_details\": {\n        \"upstream_inference_cost\": \"<float>\",\n        \"upstream_inference_prompt_cost\": \"<float>\",\n        \"upstream_inference_completion_cost\": \"<float>\"\n      }\n    },\n    \"model\": \"<string>\",\n    \"generation_context\": {\n      \"memories\": [\n        {\n          \"memory_id\": \"<string>\",\n          \"score\": \"<float>\",\n          \"memory_text\": \"<string>\",\n          \"created_at\": \"<dateTime>\",\n          \"updated_at\": \"<dateTime>\"\n        },\n        {\n          \"memory_id\": \"<string>\",\n          \"score\": \"<float>\",\n          \"memory_text\": \"<string>\",\n          \"created_at\": \"<dateTime>\",\n          \"updated_at\": \"<dateTime>\"\n        }\n      ],\n      \"relations\": [\n        {\n          \"source\": \"<string>\",\n          \"relationship\": \"<string>\",\n          \"destination\": \"<string>\"\n        },\n        {\n          \"source\": \"<string>\",\n          \"relationship\": \"<string>\",\n          \"destination\": \"<string>\"\n        }\n      ],\n      \"memory_search\": {\n        \"query\": \"<string>\",\n        \"top_k\": \"<integer>\",\n        \"threshold\": \"<double>\",\n        \"rerank\": \"<boolean>\",\n        \"results_returned\": \"<integer>\",\n        \"relations_returned\": \"<integer>\"\n      },\n      \"turn\": {\n        \"current_turn\": \"<integer>\",\n        \"max_turns\": \"<integer>\"\n      },\n      \"language_preference\": \"<string>\",\n      \"profile_id\": \"<string>\",\n      \"model\": \"<string>\",\n      \"prompt_source\": \"<string>\"\n    },\n    \"client_context\": {\n      \"values\": {\n        \"key_0\": \"<string>\"\n      }\n    }\n  },\n  \"override_generation_config\": {\n    \"model\": \"<string>\",\n    \"models\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"system_prompt\": \"<string>\",\n    \"model_routing_filter\": {\n      \"min_context_length\": \"<long>\",\n      \"min_max_completion_tokens\": \"<long>\",\n      \"required_input_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"required_output_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_prompt_cost\": \"<double>\",\n      \"max_completion_cost\": \"<double>\",\n      \"exclude_moderated\": \"<boolean>\",\n      \"required_parameters\": [\n        \"<string>\",\n        \"<string>\"\n      ]\n    },\n    \"provider\": {\n      \"order\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"allow_fallbacks\": \"<boolean>\",\n      \"require_parameters\": \"<boolean>\",\n      \"data_collection\": \"<string>\",\n      \"zdr\": \"<boolean>\",\n      \"only\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"ignore\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"quantizations\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"sort\": \"<string>\",\n      \"max_price\": {\n        \"prompt\": \"<double>\",\n        \"completion\": \"<double>\",\n        \"request\": \"<double>\",\n        \"image\": \"<double>\",\n        \"audio\": \"<double>\"\n      },\n      \"enforce_distillable_text\": \"<boolean>\",\n      \"preferred_min_throughput\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      },\n      \"preferred_max_latency\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      }\n    },\n    \"reasoning\": {\n      \"effort\": \"<string>\",\n      \"max_tokens\": \"<integer>\",\n      \"exclude\": \"<boolean>\",\n      \"include_reasoning_history\": \"<boolean>\"\n    },\n    \"usage\": {\n      \"include\": \"<boolean>\"\n    },\n    \"transforms\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_choice\": {\n      \"kind\": \"<string>\",\n      \"specific_tool_name\": \"<string>\"\n    },\n    \"client_tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_policy\": {\n      \"require_approval_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"require_approval_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"approval_mode\": \"<string>\",\n      \"client_tool_mode\": \"<string>\",\n      \"approval_timeout_ms\": \"<integer>\",\n      \"fail_on_approval_timeout_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"order_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        }\n      ],\n      \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n      \"max_parallel_tool_calls\": \"<integer>\",\n      \"max_tool_calls_per_loop\": \"<integer>\",\n      \"max_total_tool_calls\": \"<integer>\",\n      \"retriable_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_retries\": \"<integer>\",\n      \"retry_backoff\": {\n        \"initial_ms\": \"<integer>\",\n        \"multiplier\": \"<double>\",\n        \"max_ms\": \"<integer>\"\n      },\n      \"retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"non_retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"timeouts\": {\n        \"per_tool_ms\": \"<integer>\",\n        \"per_loop_ms\": \"<integer>\",\n        \"overall_ms\": \"<integer>\"\n      },\n      \"fail_on_timeout\": \"<boolean>\",\n      \"client_tool_timeout_ms\": \"<integer>\",\n      \"failure_mode\": \"<string>\",\n      \"stop_on_failure_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        }\n      ]\n    },\n    \"temperature\": \"<double>\",\n    \"top_p\": \"<double>\",\n    \"max_output_tokens\": \"<integer>\",\n    \"frequency_penalty\": \"<double>\",\n    \"presence_penalty\": \"<double>\",\n    \"stop_sequences\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"seed\": \"<long>\",\n    \"response_format\": {\n      \"json_object\": \"<boolean>\",\n      \"json_schema\": \"<object>\",\n      \"schema_name\": \"<string>\",\n      \"validate\": \"<boolean>\",\n      \"max_validation_retries\": \"<integer>\",\n      \"response_healing\": \"<boolean>\"\n    },\n    \"allow_parallel_tool_calls\": \"<boolean>\",\n    \"top_k\": \"<integer>\",\n    \"repetition_penalty\": \"<double>\",\n    \"logit_bias\": {\n      \"key_0\": \"<double>\"\n    },\n    \"top_logprobs\": \"<integer>\",\n    \"min_p\": \"<double>\",\n    \"top_a\": \"<double>\",\n    \"user\": \"<string>\",\n    \"modalities\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"plugins\": [\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"language_preference\": \"<string>\",\n    \"turn_context\": {\n      \"enabled\": \"<boolean>\",\n      \"include_tool_guidance\": \"<boolean>\",\n      \"format\": \"<string>\"\n    },\n    \"mem0\": {\n      \"enabled\": \"<boolean>\",\n      \"search_top_k\": \"<integer>\",\n      \"search_threshold\": \"<double>\",\n      \"inject_as_system_context\": \"<boolean>\",\n      \"search_query_override\": \"<string>\",\n      \"enable_rerank\": \"<boolean>\",\n      \"add_memories_async\": \"<boolean>\",\n      \"custom_extraction_prompt\": \"<string>\",\n      \"enable_graph\": \"<boolean>\",\n      \"agent_id_override\": \"<string>\",\n      \"expose_as_mcp_tool\": \"<boolean>\",\n      \"include_assistant_messages\": \"<boolean>\",\n      \"inject_memory_timestamps\": \"<boolean>\"\n    },\n    \"time_aware\": {\n      \"include_current_time\": \"<boolean>\",\n      \"include_message_timestamps\": \"<boolean>\",\n      \"include_file_timestamps\": \"<boolean>\",\n      \"timezone\": \"<string>\",\n      \"timestamp_format\": \"<string>\"\n    },\n    \"request_timeout_seconds\": \"<integer>\",\n    \"file_resolution\": {\n      \"failure_mode\": \"<string>\"\n    }\n  },\n  \"set_active_profile_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Append a message without generating",
              "request": {
                "name": "Append a message without generating",
                "description": {
                  "content": "Appends a message to a thread's history WITHOUT starting a generation run. Use it for \"context update\" feeds — the message lands in history for a later message to read, but no LLM turn runs, so there is no token cost and no chance of a stray tool call.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/append-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "append-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"message\": {\n    \"role\": \"<string>\",\n    \"content\": [\n      {\n        \"type\": \"<string>\",\n        \"content\": \"<string>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"cache_preferred\": \"<boolean>\",\n        \"structured_message\": {\n          \"json_payload\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"healed\": \"<boolean>\"\n        }\n      },\n      {\n        \"type\": \"<string>\",\n        \"content\": \"<string>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"cache_preferred\": \"<boolean>\",\n        \"structured_message\": {\n          \"json_payload\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"healed\": \"<boolean>\"\n        }\n      }\n    ],\n    \"tool_calls\": [\n      {\n        \"id\": \"<string>\",\n        \"name\": \"<string>\",\n        \"arguments_json\": \"<object>\",\n        \"status\": \"<string>\",\n        \"result_json\": \"<object>\",\n        \"executed_at\": \"<dateTime>\",\n        \"server_id\": \"<string>\",\n        \"is_client_tool\": \"<boolean>\",\n        \"requires_approval_at\": \"<dateTime>\",\n        \"approved_at\": \"<dateTime>\",\n        \"approved_by\": \"<string>\",\n        \"execution_duration\": \"<string>\"\n      },\n      {\n        \"id\": \"<string>\",\n        \"name\": \"<string>\",\n        \"arguments_json\": \"<object>\",\n        \"status\": \"<string>\",\n        \"result_json\": \"<object>\",\n        \"executed_at\": \"<dateTime>\",\n        \"server_id\": \"<string>\",\n        \"is_client_tool\": \"<boolean>\",\n        \"requires_approval_at\": \"<dateTime>\",\n        \"approved_at\": \"<dateTime>\",\n        \"approved_by\": \"<string>\",\n        \"execution_duration\": \"<string>\"\n      }\n    ],\n    \"name\": \"<string>\",\n    \"timestamp\": \"<dateTime>\",\n    \"message_id\": \"<string>\",\n    \"annotations\": [\n      {\n        \"kind\": \"<string>\",\n        \"url_citation\": {\n          \"url\": \"<string>\",\n          \"title\": \"<string>\",\n          \"content\": \"<string>\",\n          \"start_index\": \"<integer>\",\n          \"end_index\": \"<integer>\"\n        },\n        \"pdf\": {\n          \"filename\": \"<string>\",\n          \"engine\": \"<string>\",\n          \"token\": \"<string>\",\n          \"source_url\": \"<string>\",\n          \"hash\": \"<string>\",\n          \"content\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"kind\": \"<string>\",\n        \"url_citation\": {\n          \"url\": \"<string>\",\n          \"title\": \"<string>\",\n          \"content\": \"<string>\",\n          \"start_index\": \"<integer>\",\n          \"end_index\": \"<integer>\"\n        },\n        \"pdf\": {\n          \"filename\": \"<string>\",\n          \"engine\": \"<string>\",\n          \"token\": \"<string>\",\n          \"source_url\": \"<string>\",\n          \"hash\": \"<string>\",\n          \"content\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"sequence\": \"<long>\",\n    \"generated_by\": \"<string>\",\n    \"usage\": {\n      \"prompt_tokens\": \"<integer>\",\n      \"completion_tokens\": \"<integer>\",\n      \"total_tokens\": \"<integer>\",\n      \"cost_estimate\": \"<float>\",\n      \"completion_tokens_details\": {\n        \"reasoning_tokens\": \"<integer>\",\n        \"text_tokens\": \"<integer>\"\n      },\n      \"native_tokens_prompt\": \"<integer>\",\n      \"native_tokens_completion\": \"<integer>\",\n      \"prompt_tokens_details\": {\n        \"cached_tokens\": \"<integer>\",\n        \"cache_write_tokens\": \"<integer>\",\n        \"audio_tokens\": \"<integer>\",\n        \"video_tokens\": \"<integer>\"\n      },\n      \"cost_details\": {\n        \"upstream_inference_cost\": \"<float>\",\n        \"upstream_inference_prompt_cost\": \"<float>\",\n        \"upstream_inference_completion_cost\": \"<float>\"\n      }\n    },\n    \"model\": \"<string>\",\n    \"generation_context\": {\n      \"memories\": [\n        {\n          \"memory_id\": \"<string>\",\n          \"score\": \"<float>\",\n          \"memory_text\": \"<string>\",\n          \"created_at\": \"<dateTime>\",\n          \"updated_at\": \"<dateTime>\"\n        },\n        {\n          \"memory_id\": \"<string>\",\n          \"score\": \"<float>\",\n          \"memory_text\": \"<string>\",\n          \"created_at\": \"<dateTime>\",\n          \"updated_at\": \"<dateTime>\"\n        }\n      ],\n      \"relations\": [\n        {\n          \"source\": \"<string>\",\n          \"relationship\": \"<string>\",\n          \"destination\": \"<string>\"\n        },\n        {\n          \"source\": \"<string>\",\n          \"relationship\": \"<string>\",\n          \"destination\": \"<string>\"\n        }\n      ],\n      \"memory_search\": {\n        \"query\": \"<string>\",\n        \"top_k\": \"<integer>\",\n        \"threshold\": \"<double>\",\n        \"rerank\": \"<boolean>\",\n        \"results_returned\": \"<integer>\",\n        \"relations_returned\": \"<integer>\"\n      },\n      \"turn\": {\n        \"current_turn\": \"<integer>\",\n        \"max_turns\": \"<integer>\"\n      },\n      \"language_preference\": \"<string>\",\n      \"profile_id\": \"<string>\",\n      \"model\": \"<string>\",\n      \"prompt_source\": \"<string>\"\n    },\n    \"client_context\": {\n      \"values\": {\n        \"key_0\": \"<string>\"\n      }\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Send a message and wait for the result",
              "request": {
                "name": "Send a message and wait for the result",
                "description": {
                  "content": "Sends a user message and blocks until generation completes, returning all generated messages in a single response. Synchronous variant of SendMessage; use SendMessage for fire-and-forget with async polling.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/send-message-sync",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "send-message-sync"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"user_message\": {\n    \"role\": \"<string>\",\n    \"content\": [\n      {\n        \"type\": \"<string>\",\n        \"content\": \"<string>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"cache_preferred\": \"<boolean>\",\n        \"structured_message\": {\n          \"json_payload\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"healed\": \"<boolean>\"\n        }\n      },\n      {\n        \"type\": \"<string>\",\n        \"content\": \"<string>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"cache_preferred\": \"<boolean>\",\n        \"structured_message\": {\n          \"json_payload\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"healed\": \"<boolean>\"\n        }\n      }\n    ],\n    \"tool_calls\": [\n      {\n        \"id\": \"<string>\",\n        \"name\": \"<string>\",\n        \"arguments_json\": \"<object>\",\n        \"status\": \"<string>\",\n        \"result_json\": \"<object>\",\n        \"executed_at\": \"<dateTime>\",\n        \"server_id\": \"<string>\",\n        \"is_client_tool\": \"<boolean>\",\n        \"requires_approval_at\": \"<dateTime>\",\n        \"approved_at\": \"<dateTime>\",\n        \"approved_by\": \"<string>\",\n        \"execution_duration\": \"<string>\"\n      },\n      {\n        \"id\": \"<string>\",\n        \"name\": \"<string>\",\n        \"arguments_json\": \"<object>\",\n        \"status\": \"<string>\",\n        \"result_json\": \"<object>\",\n        \"executed_at\": \"<dateTime>\",\n        \"server_id\": \"<string>\",\n        \"is_client_tool\": \"<boolean>\",\n        \"requires_approval_at\": \"<dateTime>\",\n        \"approved_at\": \"<dateTime>\",\n        \"approved_by\": \"<string>\",\n        \"execution_duration\": \"<string>\"\n      }\n    ],\n    \"name\": \"<string>\",\n    \"timestamp\": \"<dateTime>\",\n    \"message_id\": \"<string>\",\n    \"annotations\": [\n      {\n        \"kind\": \"<string>\",\n        \"url_citation\": {\n          \"url\": \"<string>\",\n          \"title\": \"<string>\",\n          \"content\": \"<string>\",\n          \"start_index\": \"<integer>\",\n          \"end_index\": \"<integer>\"\n        },\n        \"pdf\": {\n          \"filename\": \"<string>\",\n          \"engine\": \"<string>\",\n          \"token\": \"<string>\",\n          \"source_url\": \"<string>\",\n          \"hash\": \"<string>\",\n          \"content\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"kind\": \"<string>\",\n        \"url_citation\": {\n          \"url\": \"<string>\",\n          \"title\": \"<string>\",\n          \"content\": \"<string>\",\n          \"start_index\": \"<integer>\",\n          \"end_index\": \"<integer>\"\n        },\n        \"pdf\": {\n          \"filename\": \"<string>\",\n          \"engine\": \"<string>\",\n          \"token\": \"<string>\",\n          \"source_url\": \"<string>\",\n          \"hash\": \"<string>\",\n          \"content\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"sequence\": \"<long>\",\n    \"generated_by\": \"<string>\",\n    \"usage\": {\n      \"prompt_tokens\": \"<integer>\",\n      \"completion_tokens\": \"<integer>\",\n      \"total_tokens\": \"<integer>\",\n      \"cost_estimate\": \"<float>\",\n      \"completion_tokens_details\": {\n        \"reasoning_tokens\": \"<integer>\",\n        \"text_tokens\": \"<integer>\"\n      },\n      \"native_tokens_prompt\": \"<integer>\",\n      \"native_tokens_completion\": \"<integer>\",\n      \"prompt_tokens_details\": {\n        \"cached_tokens\": \"<integer>\",\n        \"cache_write_tokens\": \"<integer>\",\n        \"audio_tokens\": \"<integer>\",\n        \"video_tokens\": \"<integer>\"\n      },\n      \"cost_details\": {\n        \"upstream_inference_cost\": \"<float>\",\n        \"upstream_inference_prompt_cost\": \"<float>\",\n        \"upstream_inference_completion_cost\": \"<float>\"\n      }\n    },\n    \"model\": \"<string>\",\n    \"generation_context\": {\n      \"memories\": [\n        {\n          \"memory_id\": \"<string>\",\n          \"score\": \"<float>\",\n          \"memory_text\": \"<string>\",\n          \"created_at\": \"<dateTime>\",\n          \"updated_at\": \"<dateTime>\"\n        },\n        {\n          \"memory_id\": \"<string>\",\n          \"score\": \"<float>\",\n          \"memory_text\": \"<string>\",\n          \"created_at\": \"<dateTime>\",\n          \"updated_at\": \"<dateTime>\"\n        }\n      ],\n      \"relations\": [\n        {\n          \"source\": \"<string>\",\n          \"relationship\": \"<string>\",\n          \"destination\": \"<string>\"\n        },\n        {\n          \"source\": \"<string>\",\n          \"relationship\": \"<string>\",\n          \"destination\": \"<string>\"\n        }\n      ],\n      \"memory_search\": {\n        \"query\": \"<string>\",\n        \"top_k\": \"<integer>\",\n        \"threshold\": \"<double>\",\n        \"rerank\": \"<boolean>\",\n        \"results_returned\": \"<integer>\",\n        \"relations_returned\": \"<integer>\"\n      },\n      \"turn\": {\n        \"current_turn\": \"<integer>\",\n        \"max_turns\": \"<integer>\"\n      },\n      \"language_preference\": \"<string>\",\n      \"profile_id\": \"<string>\",\n      \"model\": \"<string>\",\n      \"prompt_source\": \"<string>\"\n    },\n    \"client_context\": {\n      \"values\": {\n        \"key_0\": \"<string>\"\n      }\n    }\n  },\n  \"override_generation_config\": {\n    \"model\": \"<string>\",\n    \"models\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"system_prompt\": \"<string>\",\n    \"model_routing_filter\": {\n      \"min_context_length\": \"<long>\",\n      \"min_max_completion_tokens\": \"<long>\",\n      \"required_input_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"required_output_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_prompt_cost\": \"<double>\",\n      \"max_completion_cost\": \"<double>\",\n      \"exclude_moderated\": \"<boolean>\",\n      \"required_parameters\": [\n        \"<string>\",\n        \"<string>\"\n      ]\n    },\n    \"provider\": {\n      \"order\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"allow_fallbacks\": \"<boolean>\",\n      \"require_parameters\": \"<boolean>\",\n      \"data_collection\": \"<string>\",\n      \"zdr\": \"<boolean>\",\n      \"only\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"ignore\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"quantizations\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"sort\": \"<string>\",\n      \"max_price\": {\n        \"prompt\": \"<double>\",\n        \"completion\": \"<double>\",\n        \"request\": \"<double>\",\n        \"image\": \"<double>\",\n        \"audio\": \"<double>\"\n      },\n      \"enforce_distillable_text\": \"<boolean>\",\n      \"preferred_min_throughput\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      },\n      \"preferred_max_latency\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      }\n    },\n    \"reasoning\": {\n      \"effort\": \"<string>\",\n      \"max_tokens\": \"<integer>\",\n      \"exclude\": \"<boolean>\",\n      \"include_reasoning_history\": \"<boolean>\"\n    },\n    \"usage\": {\n      \"include\": \"<boolean>\"\n    },\n    \"transforms\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_choice\": {\n      \"kind\": \"<string>\",\n      \"specific_tool_name\": \"<string>\"\n    },\n    \"client_tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_policy\": {\n      \"require_approval_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"require_approval_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"approval_mode\": \"<string>\",\n      \"client_tool_mode\": \"<string>\",\n      \"approval_timeout_ms\": \"<integer>\",\n      \"fail_on_approval_timeout_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"order_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        }\n      ],\n      \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n      \"max_parallel_tool_calls\": \"<integer>\",\n      \"max_tool_calls_per_loop\": \"<integer>\",\n      \"max_total_tool_calls\": \"<integer>\",\n      \"retriable_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_retries\": \"<integer>\",\n      \"retry_backoff\": {\n        \"initial_ms\": \"<integer>\",\n        \"multiplier\": \"<double>\",\n        \"max_ms\": \"<integer>\"\n      },\n      \"retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"non_retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"timeouts\": {\n        \"per_tool_ms\": \"<integer>\",\n        \"per_loop_ms\": \"<integer>\",\n        \"overall_ms\": \"<integer>\"\n      },\n      \"fail_on_timeout\": \"<boolean>\",\n      \"client_tool_timeout_ms\": \"<integer>\",\n      \"failure_mode\": \"<string>\",\n      \"stop_on_failure_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        }\n      ]\n    },\n    \"temperature\": \"<double>\",\n    \"top_p\": \"<double>\",\n    \"max_output_tokens\": \"<integer>\",\n    \"frequency_penalty\": \"<double>\",\n    \"presence_penalty\": \"<double>\",\n    \"stop_sequences\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"seed\": \"<long>\",\n    \"response_format\": {\n      \"json_object\": \"<boolean>\",\n      \"json_schema\": \"<object>\",\n      \"schema_name\": \"<string>\",\n      \"validate\": \"<boolean>\",\n      \"max_validation_retries\": \"<integer>\",\n      \"response_healing\": \"<boolean>\"\n    },\n    \"allow_parallel_tool_calls\": \"<boolean>\",\n    \"top_k\": \"<integer>\",\n    \"repetition_penalty\": \"<double>\",\n    \"logit_bias\": {\n      \"key_0\": \"<double>\"\n    },\n    \"top_logprobs\": \"<integer>\",\n    \"min_p\": \"<double>\",\n    \"top_a\": \"<double>\",\n    \"user\": \"<string>\",\n    \"modalities\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"plugins\": [\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"language_preference\": \"<string>\",\n    \"turn_context\": {\n      \"enabled\": \"<boolean>\",\n      \"include_tool_guidance\": \"<boolean>\",\n      \"format\": \"<string>\"\n    },\n    \"mem0\": {\n      \"enabled\": \"<boolean>\",\n      \"search_top_k\": \"<integer>\",\n      \"search_threshold\": \"<double>\",\n      \"inject_as_system_context\": \"<boolean>\",\n      \"search_query_override\": \"<string>\",\n      \"enable_rerank\": \"<boolean>\",\n      \"add_memories_async\": \"<boolean>\",\n      \"custom_extraction_prompt\": \"<string>\",\n      \"enable_graph\": \"<boolean>\",\n      \"agent_id_override\": \"<string>\",\n      \"expose_as_mcp_tool\": \"<boolean>\",\n      \"include_assistant_messages\": \"<boolean>\",\n      \"inject_memory_timestamps\": \"<boolean>\"\n    },\n    \"time_aware\": {\n      \"include_current_time\": \"<boolean>\",\n      \"include_message_timestamps\": \"<boolean>\",\n      \"include_file_timestamps\": \"<boolean>\",\n      \"timezone\": \"<string>\",\n      \"timestamp_format\": \"<string>\"\n    },\n    \"request_timeout_seconds\": \"<integer>\",\n    \"file_resolution\": {\n      \"failure_mode\": \"<string>\"\n    }\n  },\n  \"set_active_profile_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Conversations",
          "description": {
            "content": "Conversation state, settings, and context management. See the [Conversations guide](/docs/guides/conversations).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Update conversation settings",
              "request": {
                "name": "Update conversation settings",
                "description": {
                  "content": "Updates conversation-level behavior settings such as interrupt policy, loop limits, MCP server configuration, and tool execution policies.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/update-settings",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "update-settings"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"settings\": {\n    \"interrupt_policy\": \"<string>\",\n    \"max_loops\": \"<integer>\",\n    \"max_parallel_tools\": \"<integer>\",\n    \"mcp_servers\": [\n      {\n        \"server_id\": \"<string>\",\n        \"enabled\": \"<boolean>\",\n        \"priority\": \"<integer>\",\n        \"allowlist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"blocklist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"server_overrides\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"server_id\": \"<string>\",\n        \"enabled\": \"<boolean>\",\n        \"priority\": \"<integer>\",\n        \"allowlist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"blocklist_tool_patterns\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"server_overrides\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"tool_policy\": {\n      \"require_approval_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"require_approval_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"approval_mode\": \"<string>\",\n      \"client_tool_mode\": \"<string>\",\n      \"approval_timeout_ms\": \"<integer>\",\n      \"fail_on_approval_timeout_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"order_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        }\n      ],\n      \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n      \"max_parallel_tool_calls\": \"<integer>\",\n      \"max_tool_calls_per_loop\": \"<integer>\",\n      \"max_total_tool_calls\": \"<integer>\",\n      \"retriable_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_retries\": \"<integer>\",\n      \"retry_backoff\": {\n        \"initial_ms\": \"<integer>\",\n        \"multiplier\": \"<double>\",\n        \"max_ms\": \"<integer>\"\n      },\n      \"retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"non_retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"timeouts\": {\n        \"per_tool_ms\": \"<integer>\",\n        \"per_loop_ms\": \"<integer>\",\n        \"overall_ms\": \"<integer>\"\n      },\n      \"fail_on_timeout\": \"<boolean>\",\n      \"client_tool_timeout_ms\": \"<integer>\",\n      \"failure_mode\": \"<string>\",\n      \"stop_on_failure_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        }\n      ]\n    },\n    \"prompt_variables\": \"<object>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update prompt variables",
              "request": {
                "name": "Update prompt variables",
                "description": {
                  "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.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/update-prompt-variables",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "update-prompt-variables"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"variables\": \"<object>\",\n  \"update_mask\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update default generation config",
              "request": {
                "name": "Update default generation config",
                "description": {
                  "content": "Updates the default LLM generation configuration for a conversation. These defaults apply to every subsequent SendMessage unless overridden per-request.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/update-default-generation-config",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "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  \"conversation_key\": \"<string>\",\n  \"default_generation_config\": {\n    \"model\": \"<string>\",\n    \"models\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"system_prompt\": \"<string>\",\n    \"model_routing_filter\": {\n      \"min_context_length\": \"<long>\",\n      \"min_max_completion_tokens\": \"<long>\",\n      \"required_input_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"required_output_modalities\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_prompt_cost\": \"<double>\",\n      \"max_completion_cost\": \"<double>\",\n      \"exclude_moderated\": \"<boolean>\",\n      \"required_parameters\": [\n        \"<string>\",\n        \"<string>\"\n      ]\n    },\n    \"provider\": {\n      \"order\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"allow_fallbacks\": \"<boolean>\",\n      \"require_parameters\": \"<boolean>\",\n      \"data_collection\": \"<string>\",\n      \"zdr\": \"<boolean>\",\n      \"only\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"ignore\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"quantizations\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"sort\": \"<string>\",\n      \"max_price\": {\n        \"prompt\": \"<double>\",\n        \"completion\": \"<double>\",\n        \"request\": \"<double>\",\n        \"image\": \"<double>\",\n        \"audio\": \"<double>\"\n      },\n      \"enforce_distillable_text\": \"<boolean>\",\n      \"preferred_min_throughput\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      },\n      \"preferred_max_latency\": {\n        \"p50\": \"<double>\",\n        \"p90\": \"<double>\"\n      }\n    },\n    \"reasoning\": {\n      \"effort\": \"<string>\",\n      \"max_tokens\": \"<integer>\",\n      \"exclude\": \"<boolean>\",\n      \"include_reasoning_history\": \"<boolean>\"\n    },\n    \"usage\": {\n      \"include\": \"<boolean>\"\n    },\n    \"transforms\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_choice\": {\n      \"kind\": \"<string>\",\n      \"specific_tool_name\": \"<string>\"\n    },\n    \"client_tools\": [\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      },\n      {\n        \"name\": \"<string>\",\n        \"description\": \"<string>\",\n        \"parameters_json_schema\": \"<object>\",\n        \"metadata\": {\n          \"key_0\": \"<string>\"\n        },\n        \"server_id\": \"<string>\",\n        \"tags\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"documentation_url\": \"<string>\",\n        \"output_json_schema\": \"<object>\"\n      }\n    ],\n    \"tool_policy\": {\n      \"require_approval_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"require_approval_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"auto_approve_server_ids\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"approval_mode\": \"<string>\",\n      \"client_tool_mode\": \"<string>\",\n      \"approval_timeout_ms\": \"<integer>\",\n      \"fail_on_approval_timeout_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"order_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"weight\": \"<integer>\"\n        }\n      ],\n      \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n      \"max_parallel_tool_calls\": \"<integer>\",\n      \"max_tool_calls_per_loop\": \"<integer>\",\n      \"max_total_tool_calls\": \"<integer>\",\n      \"retriable_tool_name_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"max_retries\": \"<integer>\",\n      \"retry_backoff\": {\n        \"initial_ms\": \"<integer>\",\n        \"multiplier\": \"<double>\",\n        \"max_ms\": \"<integer>\"\n      },\n      \"retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"non_retryable_error_substrings\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"timeouts\": {\n        \"per_tool_ms\": \"<integer>\",\n        \"per_loop_ms\": \"<integer>\",\n        \"overall_ms\": \"<integer>\"\n      },\n      \"fail_on_timeout\": \"<boolean>\",\n      \"client_tool_timeout_ms\": \"<integer>\",\n      \"failure_mode\": \"<string>\",\n      \"stop_on_failure_rules\": [\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        },\n        {\n          \"tool_name_patterns\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"server_ids\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"on_failure\": \"<string>\",\n          \"include_timeouts\": \"<boolean>\",\n          \"error_substrings\": [\n            \"<string>\",\n            \"<string>\"\n          ],\n          \"priority\": \"<integer>\"\n        }\n      ]\n    },\n    \"temperature\": \"<double>\",\n    \"top_p\": \"<double>\",\n    \"max_output_tokens\": \"<integer>\",\n    \"frequency_penalty\": \"<double>\",\n    \"presence_penalty\": \"<double>\",\n    \"stop_sequences\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"seed\": \"<long>\",\n    \"response_format\": {\n      \"json_object\": \"<boolean>\",\n      \"json_schema\": \"<object>\",\n      \"schema_name\": \"<string>\",\n      \"validate\": \"<boolean>\",\n      \"max_validation_retries\": \"<integer>\",\n      \"response_healing\": \"<boolean>\"\n    },\n    \"allow_parallel_tool_calls\": \"<boolean>\",\n    \"top_k\": \"<integer>\",\n    \"repetition_penalty\": \"<double>\",\n    \"logit_bias\": {\n      \"key_0\": \"<double>\"\n    },\n    \"top_logprobs\": \"<integer>\",\n    \"min_p\": \"<double>\",\n    \"top_a\": \"<double>\",\n    \"user\": \"<string>\",\n    \"modalities\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"plugins\": [\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      },\n      {\n        \"id\": \"<string>\",\n        \"pdf\": {\n          \"engine\": \"<string>\"\n        },\n        \"web\": {\n          \"engine\": \"<string>\",\n          \"max_results\": \"<integer>\",\n          \"search_prompt\": \"<string>\",\n          \"web_search_options\": {\n            \"search_context_size\": \"<string>\"\n          }\n        },\n        \"params\": {\n          \"key_0\": \"<string>\"\n        }\n      }\n    ],\n    \"language_preference\": \"<string>\",\n    \"turn_context\": {\n      \"enabled\": \"<boolean>\",\n      \"include_tool_guidance\": \"<boolean>\",\n      \"format\": \"<string>\"\n    },\n    \"mem0\": {\n      \"enabled\": \"<boolean>\",\n      \"search_top_k\": \"<integer>\",\n      \"search_threshold\": \"<double>\",\n      \"inject_as_system_context\": \"<boolean>\",\n      \"search_query_override\": \"<string>\",\n      \"enable_rerank\": \"<boolean>\",\n      \"add_memories_async\": \"<boolean>\",\n      \"custom_extraction_prompt\": \"<string>\",\n      \"enable_graph\": \"<boolean>\",\n      \"agent_id_override\": \"<string>\",\n      \"expose_as_mcp_tool\": \"<boolean>\",\n      \"include_assistant_messages\": \"<boolean>\",\n      \"inject_memory_timestamps\": \"<boolean>\"\n    },\n    \"time_aware\": {\n      \"include_current_time\": \"<boolean>\",\n      \"include_message_timestamps\": \"<boolean>\",\n      \"include_file_timestamps\": \"<boolean>\",\n      \"timezone\": \"<string>\",\n      \"timestamp_format\": \"<string>\"\n    },\n    \"request_timeout_seconds\": \"<integer>\",\n    \"file_resolution\": {\n      \"failure_mode\": \"<string>\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update context management settings",
              "request": {
                "name": "Update context management settings",
                "description": {
                  "content": "Updates context management settings for a conversation, including strategy (compaction, windowing, none), compaction thresholds, windowing limits, and selective exclusion rules.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/update-context-management-settings",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "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  \"conversation_key\": \"<string>\",\n  \"context_management_settings\": {\n    \"strategy\": \"<string>\",\n    \"compaction_config\": {\n      \"mode\": \"<string>\",\n      \"threshold\": {\n        \"token_count\": \"<integer>\",\n        \"percentage\": \"<integer>\"\n      },\n      \"generation_config\": {\n        \"model\": \"<string>\",\n        \"models\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"system_prompt\": \"<string>\",\n        \"model_routing_filter\": {\n          \"min_context_length\": \"<long>\",\n          \"min_max_completion_tokens\": \"<long>\",\n          \"required_input_modalities\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"required_output_modalities\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"max_prompt_cost\": \"<double>\",\n          \"max_completion_cost\": \"<double>\",\n          \"exclude_moderated\": \"<boolean>\",\n          \"required_parameters\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"provider\": {\n          \"order\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"allow_fallbacks\": \"<boolean>\",\n          \"require_parameters\": \"<boolean>\",\n          \"data_collection\": \"<string>\",\n          \"zdr\": \"<boolean>\",\n          \"only\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"ignore\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"quantizations\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"sort\": \"<string>\",\n          \"max_price\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"enforce_distillable_text\": \"<boolean>\",\n          \"preferred_min_throughput\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"preferred_max_latency\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          }\n        },\n        \"reasoning\": {\n          \"effort\": \"<string>\",\n          \"max_tokens\": \"<integer>\",\n          \"exclude\": \"<boolean>\",\n          \"include_reasoning_history\": \"<boolean>\"\n        },\n        \"usage\": {\n          \"include\": \"<boolean>\"\n        },\n        \"transforms\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"tools\": [\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          }\n        ],\n        \"tool_choice\": {\n          \"kind\": \"<string>\",\n          \"specific_tool_name\": \"<string>\"\n        },\n        \"client_tools\": [\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          {\n            \"name\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"description\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"parameters_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"server_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"tags\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"documentation_url\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"output_json_schema\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          }\n        ],\n        \"tool_policy\": {\n          \"require_approval_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"require_approval_server_ids\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"auto_approve_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"auto_approve_server_ids\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"approval_mode\": \"<string>\",\n          \"client_tool_mode\": \"<string>\",\n          \"approval_timeout_ms\": \"<integer>\",\n          \"fail_on_approval_timeout_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"order_rules\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"stable_sort_by_call_index_on_tie\": \"<boolean>\",\n          \"max_parallel_tool_calls\": \"<integer>\",\n          \"max_tool_calls_per_loop\": \"<integer>\",\n          \"max_total_tool_calls\": \"<integer>\",\n          \"retriable_tool_name_patterns\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"max_retries\": \"<integer>\",\n          \"retry_backoff\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"retryable_error_substrings\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"non_retryable_error_substrings\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"timeouts\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"fail_on_timeout\": \"<boolean>\",\n          \"client_tool_timeout_ms\": \"<integer>\",\n          \"failure_mode\": \"<string>\",\n          \"stop_on_failure_rules\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        },\n        \"temperature\": \"<double>\",\n        \"top_p\": \"<double>\",\n        \"max_output_tokens\": \"<integer>\",\n        \"frequency_penalty\": \"<double>\",\n        \"presence_penalty\": \"<double>\",\n        \"stop_sequences\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"seed\": \"<long>\",\n        \"response_format\": {\n          \"json_object\": \"<boolean>\",\n          \"json_schema\": \"<object>\",\n          \"schema_name\": \"<string>\",\n          \"validate\": \"<boolean>\",\n          \"max_validation_retries\": \"<integer>\",\n          \"response_healing\": \"<boolean>\"\n        },\n        \"allow_parallel_tool_calls\": \"<boolean>\",\n        \"top_k\": \"<integer>\",\n        \"repetition_penalty\": \"<double>\",\n        \"logit_bias\": {\n          \"key_0\": \"<double>\"\n        },\n        \"top_logprobs\": \"<integer>\",\n        \"min_p\": \"<double>\",\n        \"top_a\": \"<double>\",\n        \"user\": \"<string>\",\n        \"modalities\": [\n          \"<string>\",\n          \"<string>\"\n        ],\n        \"plugins\": [\n          {\n            \"id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"pdf\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"web\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"params\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          {\n            \"id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"pdf\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"web\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"params\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          }\n        ],\n        \"language_preference\": \"<string>\",\n        \"turn_context\": {\n          \"enabled\": \"<boolean>\",\n          \"include_tool_guidance\": \"<boolean>\",\n          \"format\": \"<string>\"\n        },\n        \"mem0\": {\n          \"enabled\": \"<boolean>\",\n          \"search_top_k\": \"<integer>\",\n          \"search_threshold\": \"<double>\",\n          \"inject_as_system_context\": \"<boolean>\",\n          \"search_query_override\": \"<string>\",\n          \"enable_rerank\": \"<boolean>\",\n          \"add_memories_async\": \"<boolean>\",\n          \"custom_extraction_prompt\": \"<string>\",\n          \"enable_graph\": \"<boolean>\",\n          \"agent_id_override\": \"<string>\",\n          \"expose_as_mcp_tool\": \"<boolean>\",\n          \"include_assistant_messages\": \"<boolean>\",\n          \"inject_memory_timestamps\": \"<boolean>\"\n        },\n        \"time_aware\": {\n          \"include_current_time\": \"<boolean>\",\n          \"include_message_timestamps\": \"<boolean>\",\n          \"include_file_timestamps\": \"<boolean>\",\n          \"timezone\": \"<string>\",\n          \"timestamp_format\": \"<string>\"\n        },\n        \"request_timeout_seconds\": \"<integer>\",\n        \"file_resolution\": {\n          \"failure_mode\": \"<string>\"\n        }\n      },\n      \"preserve_recent\": \"<integer>\"\n    },\n    \"windowing_config\": {\n      \"max_messages\": \"<integer>\"\n    },\n    \"selective_exclusion_config\": {\n      \"exclude_tool_results\": \"<boolean>\",\n      \"exclude_images\": \"<boolean>\",\n      \"exclude_files\": \"<boolean>\",\n      \"exclude_reasoning\": \"<boolean>\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Compact a conversation",
              "request": {
                "name": "Compact a conversation",
                "description": {
                  "content": "Triggers context compaction for a conversation, summarizing older messages to reduce token usage. Returns compaction statistics including tokens before and after and tokens saved.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/compact-conversation",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "compact-conversation"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get full conversation state",
              "request": {
                "name": "Get full conversation state",
                "description": {
                  "content": "Returns the complete state of a conversation including message history, generation config, settings, active run status, context management settings, and compaction history. Address the conversation by either the generated `conversation_key` (thread ID) or the `external_id` you supplied at creation — exactly one must be set, and both return the same state. An unknown or non-owned `external_id` returns 404.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/conversation-state",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "conversation-state"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "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 is derived server-side from the request headers.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Rate an assistant message",
              "request": {
                "name": "Rate an assistant message",
                "description": {
                  "content": "Records the caller's rating on an assistant-generated message, addressed by its\nper-conversation `message_sequence`. Two rating styles are available via `kind`:\na binary thumb (`FEEDBACK_KIND_THUMB` + `thumb_up`) or a 1–10 scale\n(`FEEDBACK_KIND_SCALE` + `rating`).\n\nThe rater is derived server-side from the verified request headers — there is\ndeliberately no \"who is rating\" parameter. One rating is kept per rater per\nmessage, so re-rating the same message replaces the caller's previous entry and\nreturns `is_update: true`.\n\nThe response carries the full message with the complete (all-rater) `feedback`\nlist applied.\n",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/rate-message",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "rate-message"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"message_sequence\": \"<long>\",\n  \"kind\": \"<string>\",\n  \"thumb_up\": \"<boolean>\",\n  \"rating\": \"<integer>\",\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Withdraw your rating on a message",
              "request": {
                "name": "Withdraw your rating on a message",
                "description": {
                  "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",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/delete-message-rating",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "delete-message-rating"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"message_sequence\": \"<long>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Voice",
          "description": {
            "content": "Real-time voice sessions via Daily and Pipecat. **In progress — not yet generally available.**",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a voice session (in progress)",
              "request": {
                "name": "Create a voice session (in progress)",
                "description": {
                  "content": "**In progress — not yet generally available.** Creates a Pipecat Daily voice session for the specified conversation. This provisions a Daily room and connects a Pipecat agent for real-time voice interaction tied to the conversation's state and history.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/create-daily-session",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "create-daily-session"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"agent_name\": \"<string>\",\n  \"socayo_config\": {\n    \"conversation_key\": \"<string>\",\n    \"user_id\": \"<string>\",\n    \"provider\": \"<string>\",\n    \"tts\": {\n      \"voice_id\": \"<string>\",\n      \"model\": \"<string>\",\n      \"sample_rate\": \"<integer>\",\n      \"volume\": \"<double>\",\n      \"speed\": \"<double>\",\n      \"emotion\": \"<string>\",\n      \"language\": \"<string>\"\n    },\n    \"heygen\": {\n      \"enabled\": \"<boolean>\",\n      \"avatar_id\": \"<string>\",\n      \"version\": \"<string>\",\n      \"quality\": \"<string>\",\n      \"video_encoding\": \"<string>\",\n      \"voice\": {\n        \"voice_id\": \"<string>\",\n        \"rate\": \"<double>\",\n        \"emotion\": \"<string>\",\n        \"elevenlabs_settings\": {\n          \"stability\": \"<double>\",\n          \"similarity_boost\": \"<double>\",\n          \"model_id\": \"<string>\",\n          \"style\": \"<integer>\",\n          \"use_speaker_boost\": \"<boolean>\"\n        }\n      },\n      \"knowledge_id\": \"<string>\",\n      \"knowledge_base\": \"<string>\",\n      \"disable_idle_timeout\": \"<boolean>\",\n      \"activity_idle_timeout\": \"<double>\"\n    },\n    \"transport\": {\n      \"audio_in_sample_rate\": \"<integer>\",\n      \"audio_out_sample_rate\": \"<integer>\"\n    },\n    \"extras\": \"<object>\"\n  },\n  \"create_daily_room\": \"<boolean>\",\n  \"daily_room_properties\": {\n    \"nbf\": \"<long>\",\n    \"exp\": \"<long>\",\n    \"max_participants\": \"<integer>\",\n    \"enable_people_ui\": \"<boolean>\",\n    \"enable_pip_ui\": \"<boolean>\",\n    \"enable_emoji_reactions\": \"<boolean>\",\n    \"enable_hand_raising\": \"<boolean>\",\n    \"enable_prejoin_ui\": \"<boolean>\",\n    \"enable_live_captions_ui\": \"<boolean>\",\n    \"enable_network_ui\": \"<boolean>\",\n    \"enable_noise_cancellation_ui\": \"<boolean>\",\n    \"enable_breakout_rooms\": \"<boolean>\",\n    \"enable_knocking\": \"<boolean>\",\n    \"owner_only_broadcast\": \"<boolean>\",\n    \"enforce_unique_user_ids\": \"<boolean>\",\n    \"enable_screenshare\": \"<boolean>\",\n    \"enable_video_processing_ui\": \"<boolean>\",\n    \"enable_chat\": \"<boolean>\",\n    \"enable_shared_chat_history\": \"<boolean>\",\n    \"enable_advanced_chat\": \"<boolean>\",\n    \"enable_hidden_participants\": \"<boolean>\",\n    \"start_video_off\": \"<boolean>\",\n    \"start_audio_off\": \"<boolean>\",\n    \"enable_recording\": \"<string>\",\n    \"eject_at_room_exp\": \"<boolean>\",\n    \"eject_after_elapsed\": \"<integer>\",\n    \"enable_mesh_sfu\": \"<boolean>\",\n    \"sfu_switchover\": \"<float>\",\n    \"enable_adaptive_simulcast\": \"<boolean>\",\n    \"lang\": \"<string>\",\n    \"geo\": \"<string>\"\n  },\n  \"daily_meeting_token_properties\": {\n    \"is_owner\": \"<boolean>\",\n    \"enable_auto_recording\": \"<boolean>\"\n  },\n  \"user_data\": {\n    \"fields\": \"<object>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Tool Approvals",
          "description": {
            "content": "Manage tool call approval workflows. See the [MCP Tools guide](/docs/guides/mcp-tools) for the full approval flow.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List pending tool approvals",
              "request": {
                "name": "List pending tool approvals",
                "description": {
                  "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.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/list-pending-approvals",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "list-pending-approvals"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Approve or reject pending tool calls",
              "request": {
                "name": "Approve or reject pending tool calls",
                "description": {
                  "content": "Submits approval decisions for one or more pending tool calls. Approved tools proceed to execution; rejected tools are marked as cancelled with the provided reason.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/submit-tool-approvals",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "submit-tool-approvals"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"conversation_key\": \"<string>\",\n  \"approvals\": [\n    {\n      \"tool_call_id\": \"<string>\",\n      \"tool_name\": \"<string>\",\n      \"approved\": \"<boolean>\",\n      \"reason\": \"<string>\"\n    },\n    {\n      \"tool_call_id\": \"<string>\",\n      \"tool_name\": \"<string>\",\n      \"approved\": \"<boolean>\",\n      \"reason\": \"<string>\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Client Tools",
          "description": {
            "content": "Submit results from client-side tool executions. See the [MCP Tools guide](/docs/guides/mcp-tools) for client-side tool patterns.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Submit client-side tool execution results",
              "request": {
                "name": "Submit client-side tool execution results",
                "description": {
                  "content": "Submits results for tool calls that were designated as client-side tools. The client executes these tools locally and returns the results here, allowing the generation workflow to continue.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/submit-client-tool-results",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "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  \"conversation_key\": \"<string>\",\n  \"results\": [\n    {\n      \"tool_call_id\": \"<string>\",\n      \"tool_name\": \"<string>\",\n      \"result_json\": \"<object>\",\n      \"error\": {\n        \"code\": \"<string>\",\n        \"message\": \"<string>\",\n        \"is_terminal\": \"<boolean>\",\n        \"details\": {\n          \"error_info\": {\n            \"reason\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"domain\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"retry_info\": {\n            \"retry_delay_ms\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"field_violations\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"upstream_error\": {\n            \"provider\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"status_code\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"raw_body\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"model_error\": {\n            \"model_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"reason\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"alternatives_tried\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"help_links\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"tool_call_id\": \"<string>\",\n      \"tool_name\": \"<string>\",\n      \"result_json\": \"<object>\",\n      \"error\": {\n        \"code\": \"<string>\",\n        \"message\": \"<string>\",\n        \"is_terminal\": \"<boolean>\",\n        \"details\": {\n          \"error_info\": {\n            \"reason\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"domain\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"metadata\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"retry_info\": {\n            \"retry_delay_ms\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"field_violations\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ],\n          \"upstream_error\": {\n            \"provider\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"status_code\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"raw_body\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"model_error\": {\n            \"model_id\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"reason\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            \"alternatives_tried\": {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          },\n          \"help_links\": [\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            },\n            {\n              \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n            }\n          ]\n        }\n      }\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "MCP Servers",
          "description": {
            "content": "Discover and introspect registered MCP servers. See the [MCP Tools guide](/docs/guides/mcp-tools).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List available MCP servers",
              "request": {
                "name": "List available MCP servers",
                "description": {
                  "content": "Returns the status of all configured MCP (Model Context Protocol) servers, including connection status, tool counts, and last discovery time. Optionally includes disconnected servers.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-list-available-servers",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-list-available-servers"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"include_disconnected\": \"<boolean>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get detailed MCP server info",
              "request": {
                "name": "Get detailed MCP server info",
                "description": {
                  "content": "Returns detailed information about a specific MCP server including its version, capabilities, metadata, connection status, and the full list of tools it provides.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-get-server-info",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "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  \"server_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Reload MCP server configuration",
              "request": {
                "name": "Reload MCP server configuration",
                "description": {
                  "content": "Reloads the MCP server configuration, reconnecting to configured servers and refreshing tool discovery. Returns which servers loaded successfully and which failed.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-reload-config",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-reload-config"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"config_path\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "MCP Tools",
          "description": {
            "content": "List and directly invoke MCP tools. See the [MCP Tools guide](/docs/guides/mcp-tools).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List available MCP tools",
              "request": {
                "name": "List available MCP tools",
                "description": {
                  "content": "Returns all tools discovered across MCP servers. Optionally filters by specific server references. Each tool includes its name, description, parameter schema, and server of origin.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-list-tools",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "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      \"server_id\": \"<string>\",\n      \"enabled\": \"<boolean>\",\n      \"priority\": \"<integer>\",\n      \"allowlist_tool_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"blocklist_tool_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"server_overrides\": {\n        \"key_0\": \"<string>\"\n      }\n    },\n    {\n      \"server_id\": \"<string>\",\n      \"enabled\": \"<boolean>\",\n      \"priority\": \"<integer>\",\n      \"allowlist_tool_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"blocklist_tool_patterns\": [\n        \"<string>\",\n        \"<string>\"\n      ],\n      \"server_overrides\": {\n        \"key_0\": \"<string>\"\n      }\n    }\n  ],\n  \"session_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Execute an MCP tool",
              "request": {
                "name": "Execute an MCP tool",
                "description": {
                  "content": "Directly invokes a specific MCP tool by name with the provided arguments. Returns the tool execution result, status, and timing information. Useful for testing tools outside of a conversation flow.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-call-tool",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-call-tool"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tool_call\": {\n    \"id\": \"<string>\",\n    \"name\": \"<string>\",\n    \"arguments_json\": \"<object>\",\n    \"status\": \"<string>\",\n    \"result_json\": \"<object>\",\n    \"executed_at\": \"<dateTime>\",\n    \"server_id\": \"<string>\",\n    \"is_client_tool\": \"<boolean>\",\n    \"requires_approval_at\": \"<dateTime>\",\n    \"approved_at\": \"<dateTime>\",\n    \"approved_by\": \"<string>\",\n    \"execution_duration\": \"<string>\"\n  },\n  \"request_id\": \"<string>\",\n  \"session_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "MCP Resources",
          "description": {
            "content": "Access structured data resources from MCP servers. See the [MCP Tools guide](/docs/guides/mcp-tools).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List MCP resources",
              "request": {
                "name": "List MCP resources",
                "description": {
                  "content": "Returns resources exposed by a specific MCP server. Resources are data objects (files, database records, etc.) that can be read by the LLM. Supports filtering by URI pattern.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-list-resources",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-list-resources"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"server_id\": \"<string>\",\n  \"uri_filter\": \"<string>\",\n  \"session_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Read an MCP resource",
              "request": {
                "name": "Read an MCP resource",
                "description": {
                  "content": "Reads the content of a specific resource by URI from an MCP server. Returns the resource metadata and content (text, images, etc.) if available.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-read-resource",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-read-resource"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"server_id\": \"<string>\",\n  \"uri\": \"<string>\",\n  \"session_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "MCP Prompts",
          "description": {
            "content": "Retrieve reusable prompt templates from MCP servers. See the [MCP Tools guide](/docs/guides/mcp-tools).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List MCP prompt templates",
              "request": {
                "name": "List MCP prompt templates",
                "description": {
                  "content": "Returns prompt templates exposed by a specific MCP server. Prompts are parameterized templates that can be rendered with user-supplied arguments.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-list-prompts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-list-prompts"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"server_id\": \"<string>\",\n  \"name_filter\": \"<string>\",\n  \"session_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get an MCP prompt template",
              "request": {
                "name": "Get an MCP prompt template",
                "description": {
                  "content": "Returns a specific prompt template by name from an MCP server, including its parameters and template string.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/mcp-get-prompt",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "mcp-get-prompt"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"server_id\": \"<string>\",\n  \"name\": \"<string>\",\n  \"session_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Memory",
          "description": {
            "content": "Semantic memory search and CRUD. See the [Memory guide](/docs/guides/memory) for how memories integrate with conversations.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Semantic search over memories",
              "request": {
                "name": "Semantic search over memories",
                "description": {
                  "content": "Performs a semantic search over the authenticated user's memories. Returns memories ranked by relevance along with optional graph relations. Supports filtering by categories and relevance threshold.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/search-memories",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "search-memories"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"query\": \"<string>\",\n  \"top_k\": \"<integer>\",\n  \"threshold\": \"<float>\",\n  \"rerank\": \"<boolean>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List user memories",
              "request": {
                "name": "List user memories",
                "description": {
                  "content": "Returns all memories for the authenticated user, optionally filtered by agent ID and categories. Returns up to the specified limit.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/list-memories",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "list-memories"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"agent_id\": \"<string>\",\n  \"limit\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get a specific memory",
              "request": {
                "name": "Get a specific memory",
                "description": {
                  "content": "Retrieves a single memory by its ID for the authenticated user.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/get-memory",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "get-memory"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"memory_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update a memory",
              "request": {
                "name": "Update a memory",
                "description": {
                  "content": "Updates the text content of a specific memory by ID.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/update-memory",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "update-memory"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"memory_id\": \"<string>\",\n  \"text\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a memory",
              "request": {
                "name": "Delete a memory",
                "description": {
                  "content": "Permanently deletes a specific memory by ID.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/llm/gateway/delete-memory",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "llm",
                    "gateway",
                    "delete-memory"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"memory_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Storage APIs",
      "description": "File and object storage management for users. Provides folder CRUD, file upload/download (including pre-signed URLs), metadata management, search, and quota tracking.\n\nAll endpoints use `POST /api/v1/storage/gateway/<method>` with a JSON request body.\n\nSee the [Storage guide](/docs/guides/storage) for upload patterns, pre-signed URLs, folder management, and quota.\n",
      "item": [
        {
          "name": "Folders",
          "description": {
            "content": "Folder management — create and delete directory containers. See the [Storage guide](/docs/guides/storage).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a new folder",
              "request": {
                "name": "Create a new folder",
                "description": {
                  "content": "Creates a new folder at the specified path. If intermediate folders do not exist they are created automatically. Returns the folder metadata and a flag indicating whether it was newly created.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/create-folder",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "create-folder"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folder_path\": \"<string>\",\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a folder",
              "request": {
                "name": "Delete a folder",
                "description": {
                  "content": "Deletes a folder at the given path. When `recursive` is true, all contained files and subfolders are removed as well. Returns counts of deleted items.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/delete-folder",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "delete-folder"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folder_path\": \"<string>\",\n  \"recursive\": \"<boolean>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Uploads & Downloads",
          "description": {
            "content": "File upload (inline and pre-signed) and pre-signed download URLs. See the [Storage guide](/docs/guides/storage) for both inline and large-file patterns.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Generate a pre-signed upload URL",
              "request": {
                "name": "Generate a pre-signed upload URL",
                "description": {
                  "content": "Step 1 of the 3-step upload flow. Generates a time-limited pre-signed URL for uploading directly to the storage backend (bypassing the gateway for the actual bytes). `size_bytes` is **required**: it is pre-checked against the user's quota and cryptographically bound into the URL (`x-goog-content-length-range`), so the storage backend itself rejects larger uploads. The response includes `required_headers` the client must send verbatim with the `PUT`, and the `file_id` to pass to `register-uploaded-file` afterwards.\n",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/generate-upload-url",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "generate-upload-url"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folder_path\": \"<string>\",\n  \"file_name\": \"<string>\",\n  \"size_bytes\": \"<long>\",\n  \"content_type\": \"<string>\",\n  \"expires_seconds\": \"<integer>\",\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Register a file uploaded via pre-signed URL",
              "request": {
                "name": "Register a file uploaded via pre-signed URL",
                "description": {
                  "content": "Step 3 of the 3-step upload flow. After `PUT`ting the bytes to the pre-signed URL, call this with the `file_id` from `generate-upload-url` (plus the same `folder_path` and the display `file_name`) to make the file visible to `list-files`, `get-file-metadata`, and `generate-download-url`. Size and content type are read from the storage backend — client-declared values are not trusted. Idempotent: re-registering an already-registered `file_id` returns the existing file with `registered: false`. Registering before the upload completed returns `404`.\n",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/register-uploaded-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "register-uploaded-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"file_id\": \"<string>\",\n  \"file_name\": \"<string>\",\n  \"folder_path\": \"<string>\",\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  },\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Generate a pre-signed download URL",
              "request": {
                "name": "Generate a pre-signed download URL",
                "description": {
                  "content": "Generates a time-limited pre-signed URL for downloading a file directly from the storage backend. Optionally sets a `Content-Disposition` header to force a download with a specific filename.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/generate-download-url",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "generate-download-url"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"file_id\": \"<string>\",\n  \"expires_seconds\": \"<integer>\",\n  \"response_content_disposition\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Generate pre-signed download URLs for multiple files",
              "request": {
                "name": "Generate pre-signed download URLs for multiple files",
                "description": {
                  "content": "Generates time-limited pre-signed download URLs for a batch of files (1–50 per request), identified by `file_ids`. Each entry in the response reports success or failure independently, so a bad `file_id` fails only its own entry rather than the whole batch.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/batch-generate-download-urls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "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  \"file_ids\": [\n    \"<string>\"\n  ],\n  \"expires_seconds\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Files",
          "description": {
            "content": "File listing, search, move, and delete. See the [Storage guide](/docs/guides/storage).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List files and folders in a directory",
              "request": {
                "name": "List files and folders in a directory",
                "description": {
                  "content": "Lists files and subfolders under the given folder path. Supports recursive listing, pagination, and filtering by extension, tags, size, upload date, or name substring.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/list-files",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "list-files"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folder_path\": \"<string>\",\n  \"recursive\": \"<boolean>\",\n  \"page_size\": \"<integer>\",\n  \"page_token\": \"<string>\",\n  \"filter\": {\n    \"extensions\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tags\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"min_size_bytes\": \"<long>\",\n    \"max_size_bytes\": \"<long>\",\n    \"uploaded_after\": \"<dateTime>\",\n    \"uploaded_before\": \"<dateTime>\",\n    \"name_contains\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Upload a file (deprecated)",
              "request": {
                "name": "Upload a file (deprecated)",
                "description": {
                  "content": "**Deprecated — use the 3-step pre-signed flow instead** (`generate-upload-url` → `PUT` → `register-uploaded-file`).\n\nUploads a file with inline content (base64-encoded bytes) to the specified folder. Custom metadata and tags may be attached. For large files, prefer the pre-signed flow — inline uploads ship the full bytes synchronously and can be slow.\n",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/upload-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "upload-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"folder_path\": \"<string>\",\n  \"file_name\": \"<string>\",\n  \"content\": \"<byte>\",\n  \"content_type\": \"<string>\",\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  },\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a file",
              "request": {
                "name": "Delete a file",
                "description": {
                  "content": "Permanently deletes a file by its ID and frees the associated storage quota.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/delete-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "delete-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"file_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Move or rename a file",
              "request": {
                "name": "Move or rename a file",
                "description": {
                  "content": "Moves a file from its current location to a different folder. Optionally renames the file during the move by supplying `new_name`.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/move-file",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "move-file"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"file_id\": \"<string>\",\n  \"destination_folder\": \"<string>\",\n  \"new_name\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Search files",
              "request": {
                "name": "Search files",
                "description": {
                  "content": "Searches across the user's storage by query string (matched against file names, tags, and content metadata). Results can be further narrowed with a `FileFilter`.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/search-files",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "search-files"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"query\": \"<string>\",\n  \"filter\": {\n    \"extensions\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tags\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"min_size_bytes\": \"<long>\",\n    \"max_size_bytes\": \"<long>\",\n    \"uploaded_after\": \"<dateTime>\",\n    \"uploaded_before\": \"<dateTime>\",\n    \"name_contains\": \"<string>\"\n  },\n  \"max_results\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Metadata",
          "description": {
            "content": "File metadata and tag management. See the [Storage guide](/docs/guides/storage).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Get file metadata",
              "request": {
                "name": "Get file metadata",
                "description": {
                  "content": "Retrieves the full metadata for a single file, including custom metadata, tags, storage reference, and checksum.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/get-file-metadata",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "get-file-metadata"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"file_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update file metadata",
              "request": {
                "name": "Update file metadata",
                "description": {
                  "content": "Updates a file's custom metadata map, tags, and/or description. Provided metadata keys are merged (overwrite existing keys; omit keys to leave unchanged).",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/update-file-metadata",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "update-file-metadata"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"file_id\": \"<string>\",\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  },\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ],\n  \"description\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Quota & State",
          "description": {
            "content": "Storage quota usage and account state. See the [Storage guide](/docs/guides/storage).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Get storage usage and quota",
              "request": {
                "name": "Get storage usage and quota",
                "description": {
                  "content": "Returns the authenticated user's current storage usage (bytes used, file count, folder count) and quota limit, along with a percentage utilization figure.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/get-storage-quota",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "get-storage-quota"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get complete storage manager state",
              "request": {
                "name": "Get complete storage manager state",
                "description": {
                  "content": "Returns the user's complete storage state in a single call — all folders, files, quota, and timestamps. Primarily intended for debugging and administrative use.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/storage/gateway/get-state",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "storage",
                    "gateway",
                    "get-state"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "End User APIs",
      "description": "Self-service profile management for end users — location, locale, default generation\nconfig, and free-form metadata.\n\nEvery endpoint is scoped to **the caller's own profile**. The user is derived\nserver-side from the gateway-verified `x-user-id` / `x-tenant-id` headers, so there\nis deliberately no user identifier in any request body: an end user can only read and\nwrite their own record, and there is no way to address someone else's.\n\nAll endpoints use `POST /api/v1/enduser/<method>` with a JSON request body.\n",
      "item": [
        {
          "name": "Profile",
          "description": {
            "content": "Read the caller's end-user profile.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Get the caller's end-user profile",
              "request": {
                "name": "Get the caller's end-user profile",
                "description": {
                  "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\nIf no row exists yet for this user, the call still succeeds and returns an empty\n`end_user` object rather than a 404. Treat \"no profile yet\" and \"profile with no\noverrides\" identically.\n",
                  "type": "text/plain"
                },
                "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
              }
            }
          ],
          "event": []
        },
        {
          "name": "Preferences",
          "description": {
            "content": "Update the caller's location, locale, default generation config, and metadata.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Update the caller's location",
              "request": {
                "name": "Update the caller's location",
                "description": {
                  "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\n`city` is reserved for a later release and is currently always empty (there is no\nreverse geocoding yet).\n",
                  "type": "text/plain"
                },
                "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\": \"<double>\",\n  \"longitude\": \"<double>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update the caller's locale override",
              "request": {
                "name": "Update the caller's locale override",
                "description": {
                  "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",
                  "type": "text/plain"
                },
                "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\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update the caller's default generation config",
              "request": {
                "name": "Update the caller's default generation config",
                "description": {
                  "content": "Sets the caller's default generation config, applied as the base for their\nconversations.\n\nOnly **user-settable** fields are accepted: `model`, `models`, the core sampling\nparameters (`temperature`, `top_p`, `max_output_tokens`, `frequency_penalty`,\n`presence_penalty`, `stop_sequences`, `seed`), and `language_preference`.\n\nOperational fields — `system_prompt`, `tools`, `client_tools`, `tool_policy`,\nMCP settings, timeouts, and anything else — are **rejected**, not silently\ndropped: a config carrying any of them fails the whole request. The allowlist is\nclosed by default, so fields added to the generation config in future releases are\nrejected here until they are explicitly opened up.\n\nModels are additionally checked against the platform model allowlist; an\nunpermitted `model` or `models` entry fails the request.\n",
                  "type": "text/plain"
                },
                "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    \"model\": \"<string>\",\n    \"models\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"temperature\": \"<double>\",\n    \"top_p\": \"<double>\",\n    \"max_output_tokens\": \"<integer>\",\n    \"frequency_penalty\": \"<double>\",\n    \"presence_penalty\": \"<double>\",\n    \"stop_sequences\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"seed\": \"<long>\",\n    \"language_preference\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update the caller's metadata",
              "request": {
                "name": "Update the caller's metadata",
                "description": {
                  "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\nkey, send it with an empty-string value.\n",
                  "type": "text/plain"
                },
                "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    \"key_0\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Notification APIs",
      "description": "Unified notification API covering user-facing and management endpoints.\n\n**User-facing endpoints** at `POST /api/v1/notifications/<method>` handle push device registration, in-app inbox, and notification preferences. User context is derived from authentication headers.\n\n**Management endpoints** at `POST /api/v1/notifications/manage/<method>` handle sending notifications, managing topics, subscribers, workflows, providers, and environment promotion. Requires secret key (`sk_*`) or admin JWT authentication.\n\nSee the [Notifications guide](/docs/guides/notifications) for push, in-app, email, SMS, and chat delivery — topics, digest, and workflow configuration.\n",
      "item": [
        {
          "name": "User: Channel Registration",
          "description": {
            "content": "Register and manage push notification devices and channels. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Register a push notification device",
              "request": {
                "name": "Register a push notification device",
                "description": {
                  "content": "Registers an FCM device token for push notifications. Associates the token with the user's subscriber profile.",
                  "type": "text/plain"
                },
                "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  \"fcm_token\": \"<string>\",\n  \"platform\": \"<string>\",\n  \"device_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Unregister a push notification device",
              "request": {
                "name": "Unregister a push notification device",
                "description": {
                  "content": "Removes an FCM device token from the user's subscriber profile.",
                  "type": "text/plain"
                },
                "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  \"fcm_token\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get registered notification channels",
              "request": {
                "name": "Get registered notification channels",
                "description": {
                  "content": "Returns the list of notification channels and their registration status for the authenticated user.",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get an inbox session token",
              "request": {
                "name": "Get an inbox session token",
                "description": {
                  "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.",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "User: In-App Inbox",
          "description": {
            "content": "Real-time in-app inbox — session token, feed, mark, and delete. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Get inbox feed messages",
              "request": {
                "name": "Get inbox feed messages",
                "description": {
                  "content": "Returns a paginated list of in-app inbox messages for the authenticated user, with optional filtering by status and category.",
                  "type": "text/plain"
                },
                "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": "{\n  \"page\": \"<integer>\",\n  \"page_size\": \"<integer>\",\n  \"filter\": {\n    \"unseen_only\": \"<boolean>\",\n    \"unread_only\": \"<boolean>\",\n    \"feed_ids\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"categories\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"tags\": [\n      \"<string>\",\n      \"<string>\"\n    ],\n    \"archived\": \"<boolean>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get unseen and unread inbox counts",
              "request": {
                "name": "Get unseen and unread inbox counts",
                "description": {
                  "content": "Returns the number of unseen and unread messages in the user's inbox, optionally filtered by feed IDs.",
                  "type": "text/plain"
                },
                "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": "{\n  \"feed_ids\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Mark a single inbox message",
              "request": {
                "name": "Mark a single inbox message",
                "description": {
                  "content": "Marks a specific inbox message as seen, read, unseen, or unread.",
                  "type": "text/plain"
                },
                "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  \"message_id\": \"<string>\",\n  \"mark_as\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Mark all inbox messages",
              "request": {
                "name": "Mark all inbox messages",
                "description": {
                  "content": "Marks all inbox messages as seen, read, unseen, or unread. Optionally scoped to specific feed IDs.",
                  "type": "text/plain"
                },
                "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  \"mark_as\": \"<string>\",\n  \"feed_ids\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete an inbox message",
              "request": {
                "name": "Delete an inbox message",
                "description": {
                  "content": "Permanently deletes a specific inbox message for the authenticated user.",
                  "type": "text/plain"
                },
                "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  \"message_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Archive an inbox message",
              "request": {
                "name": "Archive an inbox message",
                "description": {
                  "content": "Archives a single inbox message. Archived messages are hidden from the default feed but retained.",
                  "type": "text/plain"
                },
                "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  \"notification_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Unarchive an inbox message",
              "request": {
                "name": "Unarchive an inbox message",
                "description": {
                  "content": "Restores a previously archived inbox message back into the default feed.",
                  "type": "text/plain"
                },
                "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  \"notification_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Archive all inbox messages",
              "request": {
                "name": "Archive all inbox messages",
                "description": {
                  "content": "Archives all inbox messages for the authenticated user. Optionally scoped to specific workflow tags (OR logic).",
                  "type": "text/plain"
                },
                "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": "{\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Archive all read inbox messages",
              "request": {
                "name": "Archive all read inbox messages",
                "description": {
                  "content": "Archives every already-read inbox message for the authenticated user. Optionally scoped to specific workflow tags (OR logic).",
                  "type": "text/plain"
                },
                "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": "{\n  \"tags\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Complete an inbox message action",
              "request": {
                "name": "Complete an inbox message action",
                "description": {
                  "content": "Marks a call-to-action button (primary or secondary) on an inbox message as completed.",
                  "type": "text/plain"
                },
                "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  \"notification_id\": \"<string>\",\n  \"action_type\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Revert an inbox message action",
              "request": {
                "name": "Revert an inbox message action",
                "description": {
                  "content": "Reverts a previously completed call-to-action button (primary or secondary) on an inbox message back to its pending state.",
                  "type": "text/plain"
                },
                "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  \"notification_id\": \"<string>\",\n  \"action_type\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "User: Preferences",
          "description": {
            "content": "Get and update per-channel notification preferences. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Get notification preferences",
              "request": {
                "name": "Get notification preferences",
                "description": {
                  "content": "Returns the authenticated user's notification preferences, including per-channel and per-category settings.",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update global notification preferences",
              "request": {
                "name": "Update global notification preferences",
                "description": {
                  "content": "Updates the subscriber's global (all-workflow) channel toggles. Omitted channels are left unchanged.",
                  "type": "text/plain"
                },
                "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    \"in_app\": \"<boolean>\",\n    \"push\": \"<boolean>\",\n    \"email\": \"<boolean>\",\n    \"sms\": \"<boolean>\",\n    \"chat\": \"<boolean>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update per-workflow notification preferences",
              "request": {
                "name": "Update per-workflow notification preferences",
                "description": {
                  "content": "Updates the subscriber's channel toggles for a single workflow. Omitted channels are left unchanged.",
                  "type": "text/plain"
                },
                "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  \"workflow_id\": \"<string>\",\n  \"channels\": {\n    \"in_app\": \"<boolean>\",\n    \"push\": \"<boolean>\",\n    \"email\": \"<boolean>\",\n    \"sms\": \"<boolean>\",\n    \"chat\": \"<boolean>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Bulk-update per-workflow preferences",
              "request": {
                "name": "Bulk-update per-workflow preferences",
                "description": {
                  "content": "Updates channel toggles for up to 100 workflows in a single request.",
                  "type": "text/plain"
                },
                "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      \"workflow_id\": \"<string>\",\n      \"channels\": {\n        \"in_app\": \"<boolean>\",\n        \"push\": \"<boolean>\",\n        \"email\": \"<boolean>\",\n        \"sms\": \"<boolean>\",\n        \"chat\": \"<boolean>\"\n      }\n    },\n    {\n      \"workflow_id\": \"<string>\",\n      \"channels\": {\n        \"in_app\": \"<boolean>\",\n        \"push\": \"<boolean>\",\n        \"email\": \"<boolean>\",\n        \"sms\": \"<boolean>\",\n        \"chat\": \"<boolean>\"\n      }\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Notification Dispatch",
          "description": {
            "content": "Send, broadcast, bulk-send, topic-send, and cancel notifications. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Send a notification to a user",
              "request": {
                "name": "Send a notification to a user",
                "description": {
                  "content": "Sends a notification to a single user by triggering a Novu workflow. Delivery channels (push, in-app, email, SMS, chat) are determined by the workflow configuration. Pass an optional transaction_id for idempotent sends.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"user_id\": \"<string>\",\n  \"payload\": {\n    \"key_0\": \"<string>\"\n  },\n  \"overrides\": {\n    \"key_0\": \"<string>\"\n  },\n  \"transaction_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Send a notification to multiple users",
              "request": {
                "name": "Send a notification to multiple users",
                "description": {
                  "content": "Sends the same notification to up to 100 users in a single request. Returns per-user delivery results including any individual failures.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"events\": [\n    {\n      \"workflow_id\": \"<string>\",\n      \"user_id\": \"<string>\",\n      \"payload\": {\n        \"key_0\": \"<string>\"\n      },\n      \"overrides\": {\n        \"key_0\": \"<string>\"\n      },\n      \"transaction_id\": \"<string>\"\n    },\n    {\n      \"workflow_id\": \"<string>\",\n      \"user_id\": \"<string>\",\n      \"payload\": {\n        \"key_0\": \"<string>\"\n      },\n      \"overrides\": {\n        \"key_0\": \"<string>\"\n      },\n      \"transaction_id\": \"<string>\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Broadcast a notification to every subscriber",
              "request": {
                "name": "Broadcast a notification to every subscriber",
                "description": {
                  "content": "Triggers a workflow for every subscriber in the tenant. The payload's `category` must be `system` or `product`; other categories are rejected.",
                  "type": "text/plain"
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/notifications/manage/broadcast",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "notifications",
                    "manage",
                    "broadcast"
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "auth": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"payload\": {\n    \"key_0\": \"<string>\"\n  },\n  \"overrides\": {\n    \"key_0\": \"<string>\"\n  },\n  \"transaction_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Cancel a pending notification",
              "request": {
                "name": "Cancel a pending notification",
                "description": {
                  "content": "Cancels a previously sent notification that has not yet been delivered. Only scheduled, delayed, or queued notifications can be cancelled.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"transaction_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Topics",
          "description": {
            "content": "Pub/sub fan-out — create topics, manage subscribers, send to topic. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a notification topic",
              "request": {
                "name": "Create a notification topic",
                "description": {
                  "content": "Creates a new topic that users can be subscribed to. Topics enable broadcasting notifications to groups of subscribers.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topic_key\": \"<string>\",\n  \"name\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a notification topic",
              "request": {
                "name": "Delete a notification topic",
                "description": {
                  "content": "Deletes an existing topic. All subscriber associations with this topic are removed.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topic_key\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Add subscribers to a topic",
              "request": {
                "name": "Add subscribers to a topic",
                "description": {
                  "content": "Adds up to 100 users as subscribers to the specified topic.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topic_key\": \"<string>\",\n  \"user_ids\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Remove subscribers from a topic",
              "request": {
                "name": "Remove subscribers from a topic",
                "description": {
                  "content": "Removes the specified users from the topic's subscriber list.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topic_key\": \"<string>\",\n  \"user_ids\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List subscribers of a topic",
              "request": {
                "name": "List subscribers of a topic",
                "description": {
                  "content": "Returns a paginated list of user IDs subscribed to the specified topic.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topic_key\": \"<string>\",\n  \"page\": \"<integer>\",\n  \"page_size\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Check if a user is subscribed to a topic",
              "request": {
                "name": "Check if a user is subscribed to a topic",
                "description": {
                  "content": "Returns whether the specified user is currently subscribed to the given topic.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"topic_key\": \"<string>\",\n  \"user_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Send a notification to all topic subscribers",
              "request": {
                "name": "Send a notification to all topic subscribers",
                "description": {
                  "content": "Broadcasts a notification to all subscribers of the specified topic. Optionally excludes a single user (e.g., the action originator).",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"topic_key\": \"<string>\",\n  \"payload\": {\n    \"key_0\": \"<string>\"\n  },\n  \"overrides\": {\n    \"key_0\": \"<string>\"\n  },\n  \"transaction_id\": \"<string>\",\n  \"exclude_user_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Digest",
          "description": {
            "content": "Batched digest delivery and cancellation. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Send a notification with digest aggregation",
              "request": {
                "name": "Send a notification with digest aggregation",
                "description": {
                  "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.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"user_id\": \"<string>\",\n  \"payload\": {\n    \"key_0\": \"<string>\"\n  },\n  \"overrides\": {\n    \"key_0\": \"<string>\"\n  },\n  \"transaction_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Cancel a pending digest event",
              "request": {
                "name": "Cancel a pending digest event",
                "description": {
                  "content": "Cancels a specific event from a pending digest. If the digest has already been sent, this has no effect.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"transaction_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Subscribers",
          "description": {
            "content": "Create, read, update, delete, and list notification subscribers. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a notification subscriber",
              "request": {
                "name": "Create a notification subscriber",
                "description": {
                  "content": "Creates a new subscriber profile in the notification system. The subscriber ID is used to target notifications and manage preferences.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"subscriber_id\": \"<string>\",\n  \"email\": \"<string>\",\n  \"phone\": \"<string>\",\n  \"first_name\": \"<string>\",\n  \"last_name\": \"<string>\",\n  \"avatar_url\": \"<string>\",\n  \"locale\": \"<string>\",\n  \"data\": {\n    \"key_0\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get the caller's subscriber profile",
              "request": {
                "name": "Get the caller's subscriber profile",
                "description": {
                  "content": "Returns the subscriber profile for the authenticated caller, including channel registrations and notification preferences.",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update subscriber profile data",
              "request": {
                "name": "Update subscriber profile data",
                "description": {
                  "content": "Updates the subscriber's profile data including name, email, phone, locale, and custom metadata.",
                  "type": "text/plain"
                },
                "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    \"first_name\": \"<string>\",\n    \"last_name\": \"<string>\",\n    \"email\": \"<string>\",\n    \"phone\": \"<string>\",\n    \"avatar_url\": \"<string>\",\n    \"locale\": \"<string>\",\n    \"timezone\": \"<string>\",\n    \"custom_data\": {\n      \"key_0\": \"<string>\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete the caller's subscriber profile",
              "request": {
                "name": "Delete the caller's subscriber profile",
                "description": {
                  "content": "Permanently deletes the authenticated caller's subscriber profile and all associated data from the notification system.",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List all subscribers",
              "request": {
                "name": "List all subscribers",
                "description": {
                  "content": "Returns a paginated list of all subscriber profiles in the notification system.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"page\": \"<integer>\",\n  \"page_size\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Activity & Status",
          "description": {
            "content": "Query delivery status and notification activity logs. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Get delivery status of a notification",
              "request": {
                "name": "Get delivery status of a notification",
                "description": {
                  "content": "Returns the current delivery status and metadata for a specific notification transaction, including provider-level details and timestamps.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"transaction_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get notification activity log",
              "request": {
                "name": "Get notification activity log",
                "description": {
                  "content": "Returns a paginated activity log of notifications, filterable by channel, category, and time range.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"page\": \"<integer>\",\n  \"page_size\": \"<integer>\",\n  \"channels\": [\n    \"<string>\",\n    \"<string>\"\n  ],\n  \"from\": \"<dateTime>\",\n  \"to\": \"<dateTime>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Providers",
          "description": {
            "content": "Configure and list delivery providers (FCM, SendGrid, etc.). See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Configure a notification provider",
              "request": {
                "name": "Configure a notification provider",
                "description": {
                  "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",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"provider\": \"<string>\",\n  \"credentials\": {\n    \"key_0\": \"<string>\"\n  },\n  \"active\": \"<boolean>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List configured providers",
              "request": {
                "name": "List configured providers",
                "description": {
                  "content": "Returns all configured notification providers and their activation status.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Management: Workflows",
          "description": {
            "content": "Create, update, get, list, and delete notification workflows. See the [Notifications guide](/docs/guides/notifications).",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a notification workflow",
              "request": {
                "name": "Create a notification workflow",
                "description": {
                  "content": "Creates a new notification workflow definition with steps, channel configuration, and preference settings.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow\": {\n    \"key_0\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update an existing notification workflow",
              "request": {
                "name": "Update an existing notification workflow",
                "description": {
                  "content": "Updates an existing workflow definition. The workflow can be identified by either workflow ID or trigger identifier.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"workflow\": {\n    \"key_0\": \"<string>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get a notification workflow",
              "request": {
                "name": "Get a notification workflow",
                "description": {
                  "content": "Returns the full workflow definition and metadata. The workflow can be identified by either workflow ID or trigger identifier.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"trigger_identifier\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List notification workflows",
              "request": {
                "name": "List notification workflows",
                "description": {
                  "content": "Returns a paginated list of all notification workflows with summary information.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"page\": \"<integer>\",\n  \"page_size\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a notification workflow",
              "request": {
                "name": "Delete a notification workflow",
                "description": {
                  "content": "Deletes a notification workflow. The workflow can be identified by either workflow ID or trigger identifier.",
                  "type": "text/plain"
                },
                "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": null,
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"workflow_id\": \"<string>\",\n  \"trigger_identifier\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Scheduler APIs",
      "description": "Scheduled job management for tenant applications — cron, one-shot, and\nrecurring-interval schedules that invoke an HTTP target on a timer.\n\nCaller identity and tenant are derived from your credentials — you never\npass user or tenant identifiers in the request body. Schedules are durable:\nthey survive restarts, track their own execution history, and retry\nautomatically on failure.\n\nAll endpoints use `POST /api/v1/scheduler/<method>` with a JSON request\nbody. Request and response bodies use **protojson** encoding (the JSON\nrepresentation of Protocol Buffer messages): enum fields are serialized as\ntheir string names and timestamps as RFC 3339 strings.\n\nSee the [Scheduled Jobs guide](/docs/guides/scheduled-jobs) for\nconcepts, examples, and retry behaviour.\n",
      "item": [
        {
          "name": "Job Lifecycle",
          "description": {
            "content": "Create, manage, pause, resume, and delete scheduled jobs. See the [Scheduled Jobs guide](/docs/guides/scheduled-jobs) for cron, one-shot, and recurring-interval patterns with retry and auto-pause.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a scheduled job",
              "request": {
                "name": "Create a scheduled job",
                "description": {
                  "content": "Creates a new scheduled job. Supply exactly one schedule expression for\nthe chosen `schedule_type`:\n\n- `SCHEDULE_TYPE_CRON` — set `cron_expression` (and optionally `timezone`)\n- `SCHEDULE_TYPE_ONCE` — set `scheduled_at`\n- `SCHEDULE_TYPE_RECURRING_INTERVAL` — set `interval_seconds`\n\nThe job becomes active immediately and fires on its next matching time.\n",
                  "type": "text/plain"
                },
                "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\": \"<string>\",\n  \"target\": {\n    \"url\": \"<uri>\",\n    \"kind\": \"<string>\",\n    \"method\": \"<string>\",\n    \"payload\": {\n      \"key_0\": \"<string>\"\n    }\n  },\n  \"description\": \"<string>\",\n  \"schedule_type\": \"<string>\",\n  \"cron_expression\": \"<string>\",\n  \"timezone\": \"<string>\",\n  \"scheduled_at\": \"<dateTime>\",\n  \"interval_seconds\": \"<integer>\",\n  \"retry_policy\": {\n    \"max_attempts\": \"<integer>\",\n    \"initial_backoff_ms\": \"<integer>\",\n    \"max_backoff_ms\": \"<integer>\"\n  },\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  },\n  \"auto_pause_threshold\": \"<integer>\",\n  \"owner_subject\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Get a scheduled job",
              "request": {
                "name": "Get a scheduled job",
                "description": {
                  "content": "Returns the metadata and current state of a single scheduled job by ID.",
                  "type": "text/plain"
                },
                "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  \"schedule_id\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List scheduled jobs",
              "request": {
                "name": "List scheduled jobs",
                "description": {
                  "content": "Returns a paginated list of scheduled jobs for the authenticated\ntenant and project. Optionally filter by lifecycle state or target kind.\n",
                  "type": "text/plain"
                },
                "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": "{\n  \"page_size\": \"<integer>\",\n  \"page_token\": \"<string>\",\n  \"state_filter\": \"<string>\",\n  \"target_kind_filter\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update a scheduled job",
              "request": {
                "name": "Update a scheduled job",
                "description": {
                  "content": "Updates an existing scheduled job. Only the fields present in the\nrequest are modified; omitted fields are left unchanged.\n\nChanging the cron expression may not take effect until the next worker\ndeployment — inspect `effective_at` in the response to confirm.\n",
                  "type": "text/plain"
                },
                "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  \"schedule_id\": \"<string>\",\n  \"name\": \"<string>\",\n  \"description\": \"<string>\",\n  \"cron_expression\": \"<string>\",\n  \"timezone\": \"<string>\",\n  \"scheduled_at\": \"<dateTime>\",\n  \"interval_seconds\": \"<integer>\",\n  \"target\": {\n    \"url\": \"<uri>\",\n    \"kind\": \"<string>\",\n    \"method\": \"<string>\",\n    \"payload\": {\n      \"key_0\": \"<string>\"\n    }\n  },\n  \"retry_policy\": {\n    \"max_attempts\": \"<integer>\",\n    \"initial_backoff_ms\": \"<integer>\",\n    \"max_backoff_ms\": \"<integer>\"\n  },\n  \"metadata\": {\n    \"key_0\": \"<string>\"\n  },\n  \"auto_pause_threshold\": \"<integer>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Pause a scheduled job",
              "request": {
                "name": "Pause a scheduled job",
                "description": {
                  "content": "Pauses an active scheduled job. No executions fire while the job is paused.",
                  "type": "text/plain"
                },
                "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  \"schedule_id\": \"<string>\",\n  \"reason\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Resume a scheduled job",
              "request": {
                "name": "Resume a scheduled job",
                "description": {
                  "content": "Resumes a previously paused scheduled job, returning it to the active state.",
                  "type": "text/plain"
                },
                "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  \"schedule_id\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a scheduled job",
              "request": {
                "name": "Delete a scheduled job",
                "description": {
                  "content": "Soft-deletes a scheduled job. The job stops firing immediately. Deleted\njobs are retained for audit purposes and can still be inspected by ID.\n",
                  "type": "text/plain"
                },
                "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  \"schedule_id\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete all scheduled jobs for a project",
              "request": {
                "name": "Delete all scheduled jobs for a project",
                "description": {
                  "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",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete all scheduled jobs for the calling owner",
              "request": {
                "name": "Delete all scheduled jobs for the calling owner",
                "description": {
                  "content": "Soft-deletes every scheduled job owned by the caller (derived from the\ningress subject) within the tenant and project carried in the request\ncontext. Used by client apps at sign-out so per-user schedules don't\noutlive the user's session on a given device. The request body carries\nno fields.\n",
                  "type": "text/plain"
                },
                "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": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Execution History",
          "description": {
            "content": "Query execution records and delivery history. See the [Scheduled Jobs guide](/docs/guides/scheduled-jobs) for status values, retry policy details, and response capture fields.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List executions for a scheduled job",
              "request": {
                "name": "List executions for a scheduled job",
                "description": {
                  "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",
                  "type": "text/plain"
                },
                "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  \"schedule_id\": \"<string>\",\n  \"page_size\": \"<integer>\",\n  \"page_token\": \"<string>\",\n  \"status_filter\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        }
      ]
    },
    {
      "name": "Webhook APIs",
      "description": "Outbound webhooks — register endpoints, subscribe them to event types, and inspect or\nretry deliveries. All operations are scoped to the authenticated tenant.\n\nAll endpoints use `POST /api/v1/webhooks/<method>` with a JSON request body.\n\n### Endpoints and subscriptions\n\nAn **endpoint** is a URL you own. A **subscription** binds an endpoint to a set of\nevent types. Create the endpoint first, then subscribe it — or pass `event_types` on\n[`create-endpoint`](/docs/api/webhook-gateway/create-webhook-endpoint) to do both in\none call.\n\nKeep **one subscription per endpoint**. Creating a second subscription on the same\nendpoint double-delivers every matching event.\n\nTo change what an endpoint receives, delete the existing subscription and create a\nreplacement — do not add a second one. There is currently no `update-subscription`\nroute exposed, so delete-then-create is the supported path. Events published in the\ngap between the two calls are not delivered to that endpoint.\n\n### Addressing subscriptions\n\n`create-subscription` accepts an optional `external_id` — your own identifier, unique\namong live subscriptions in the tenant. Where a subscription reference is needed you\nmay supply either `subscription_id` or `external_id`, but **exactly one**: sending\nboth, or neither, is rejected. An `external_id` is released for reuse once its\nsubscription is deleted.\n",
      "item": [
        {
          "name": "Endpoints",
          "description": {
            "content": "Register and manage the URLs that receive webhook deliveries.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a webhook endpoint",
              "request": {
                "name": "Create a webhook endpoint",
                "description": {
                  "content": "Registers a new webhook endpoint URL for the authenticated tenant. Optionally creates an auto-subscription when `event_types` are provided, so the caller can set up both endpoint and subscription in a single call.\n",
                  "type": "text/plain"
                },
                "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\": \"<string>\",\n  \"url\": \"<uri>\",\n  \"description\": \"<string>\",\n  \"event_types\": [\n    \"<string>\",\n    \"<string>\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List webhook endpoints",
              "request": {
                "name": "List webhook endpoints",
                "description": {
                  "content": "Returns a paginated list of all webhook endpoints belonging to the authenticated tenant.",
                  "type": "text/plain"
                },
                "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": "{\n  \"page\": \"<integer>\",\n  \"per_page\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Update a webhook endpoint",
              "request": {
                "name": "Update a webhook endpoint",
                "description": {
                  "content": "Updates the mutable fields of an existing webhook endpoint. Only the fields present in the request body are modified; absent fields are left unchanged.",
                  "type": "text/plain"
                },
                "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  \"endpoint_id\": \"<string>\",\n  \"name\": \"<string>\",\n  \"url\": \"<uri>\",\n  \"description\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a webhook endpoint",
              "request": {
                "name": "Delete a webhook endpoint",
                "description": {
                  "content": "Permanently removes a webhook endpoint and all its associated subscriptions from the tenant's project.",
                  "type": "text/plain"
                },
                "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  \"endpoint_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Subscriptions",
          "description": {
            "content": "Bind endpoints to event types. Keep one subscription per endpoint — a second one double-delivers.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "Create a webhook subscription",
              "request": {
                "name": "Create a webhook subscription",
                "description": {
                  "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.",
                  "type": "text/plain"
                },
                "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  \"endpoint_id\": \"<string>\",\n  \"event_types\": [\n    \"<string>\"\n  ],\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "List webhook subscriptions",
              "request": {
                "name": "List webhook subscriptions",
                "description": {
                  "content": "Returns a paginated list of webhook subscriptions. Optionally filter by endpoint ID.",
                  "type": "text/plain"
                },
                "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  \"endpoint_id\": \"<string>\",\n  \"page\": \"<integer>\",\n  \"per_page\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Delete a webhook subscription",
              "request": {
                "name": "Delete a webhook subscription",
                "description": {
                  "content": "Permanently removes a webhook subscription. The associated endpoint is not affected.",
                  "type": "text/plain"
                },
                "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  \"subscription_id\": \"<string>\",\n  \"external_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        },
        {
          "name": "Deliveries",
          "description": {
            "content": "Inspect delivery attempts and re-queue failed ones.",
            "type": "text/plain"
          },
          "item": [
            {
              "name": "List webhook event deliveries",
              "request": {
                "name": "List webhook event deliveries",
                "description": {
                  "content": "Returns a paginated list of event delivery attempts. Supports filtering by endpoint, subscription, event, delivery status, and creation time range.",
                  "type": "text/plain"
                },
                "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  \"endpoint_id\": \"<string>\",\n  \"subscription_id\": \"<string>\",\n  \"event_id\": \"<string>\",\n  \"status\": \"<string>\",\n  \"created_after\": \"<dateTime>\",\n  \"created_before\": \"<dateTime>\",\n  \"page\": \"<integer>\",\n  \"per_page\": \"<integer>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            },
            {
              "name": "Retry a failed webhook delivery",
              "request": {
                "name": "Retry a failed webhook delivery",
                "description": {
                  "content": "Re-queues a previously failed or discarded event delivery for another delivery attempt.",
                  "type": "text/plain"
                },
                "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  \"delivery_id\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "event": [],
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              }
            }
          ],
          "event": []
        }
      ]
    }
  ]
}
